2012-07-18 23 views
1

我在我的應用程序中使用了一個自定義按鈕控件,並且每個人的textwrapping都設置爲用於翻譯目的。在進行測試時,我發現按照我的說明書,一些字符串以各種語言進行包裝,但按鈕高度保持不變,因此第二行文本從視圖中切斷。現在我從ResourceDictionary中的自定義按鈕樣式中設置xaml中的每個按鈕樣式,但我無法弄清楚如何從ResourceDictionary相應地調整按鈕高度(在這種情況下,我只需要一次更改按鈕樣式,而不是手動在我可以做的每一個按鈕上)。我將如何去更新我的資源字典中的自定義按鈕樣式,以便高度自動根據文本的包裝進行調整?按鈕實現的示例如下:如何在包裝文本時調整自定義按鈕高度

MainPage.xaml中

<Button x:Name="btnUseEmailAddress" Style="{StaticResource GlassButton}" Click="btnUseEmailAddress_Click" Margin="0,10"> 
         <Button.Content> 
          <TextBlock TextWrapping="Wrap" Text="{Binding Path=LocalizedResources.MainPage_Contacts_UseContactsEmailAddress, Source={StaticResource LocalizedStrings}}"/> 
         </Button.Content> 
</Button> 

ResourceDictionary.xaml

<Style x:Key="GlassButton" TargetType="Button"> 
    <Setter Property="FontSize" Value="25.33" /> 
    <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}" /> 
    <Setter Property="Height" Value="60"/> 
    <Setter Property="Padding" Value="10,3,10,5"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Border x:Name="ButtonBorder" 
       CornerRadius="30" 
       BorderThickness="4,4,4,4" 
       Background="#AA000000" 
       BorderBrush="#99FFFFFF" 
       RenderTransformOrigin="0.5,0.5"> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="1.7*"/> 
         </Grid.RowDefinitions> 
         <Border Grid.Row="0" CornerRadius="23,23,0,0"> 
          <Border.Background> 
           <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
            <GradientStop Color="#08FFFFFF" Offset="0"/> 
            <GradientStop Color="#88FFFFFF" Offset="1"/> 
           </LinearGradientBrush> 
          </Border.Background> 
         </Border> 
         <ContentPresenter x:Name="ButtonContentPresenter" 
          VerticalAlignment="Center" 
          Grid.RowSpan="2" 
          HorizontalAlignment="Center"/> 
        </Grid> 
       </Border> 
       <!--<ControlTemplate.Triggers> 
        <Trigger Property="IsPressed" Value="True"> 
         <Setter Property="RenderTransform" TargetName="ButtonBorder"> 
          <Setter.Value> 
           <TransformGroup> 
            <ScaleTransform ScaleX="0.9" ScaleY="0.9"/> 
           </TransformGroup> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
       </ControlTemplate.Triggers>--> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

要注意,玻璃按鈕樣式爲目前看起來不錯,到底是什麼我想要的,除了文本被包裝。我可以使用<Button x:Name="btnUseEmailAddress" Height="Auto"...將按鈕高度調整爲在MainPage.xaml中自動調整,但是我必須爲每個按鈕執行此操作(這非常棒!)。那麼有沒有什麼方法可以在玻璃按鈕風格中實現這一點?

回答

1

我建議將Height屬性更改爲MinHeight。這將在大多數情況下將高度設置爲60,但如果文本確實需要包裹,高度將會增加。

變化:

<Setter Property="Height" Value="60"/> 

要:

<Setter Property="MinHeight" Value="60"/> 
相關問題