1

アプリケーションでカスタムボタンコントロールを使用していますが、全員のテキストラッピングは翻訳目的でラッピングするように設定されています。テストしたところ、ボタンの高さは同じままであるにもかかわらず、さまざまな言語の一部の文字列が仕様に従って折り返されていることがわかりました。そのため、テキストの2行目が表示されなくなります。ここで、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>

ちなみに、現在のGlassボタンのスタイルは見栄えがよく、テキストが折り返されている場合を除いて、まさに私が望むものです。を使用してMainPage.xamlでボタンの高さを自動に調整できますが、ボタン<Button x:Name="btnUseEmailAddress" Height="Auto"...ごとにこれを行う必要があります(これはたくさんあります!)。それで、ガラスボタンスタイルでこれを達成する方法はありますか?

4

1 に答える 1

1

HeightプロパティをMinHeightに変更することをお勧めします。これにより、ほとんどの場合、高さが60に設定されますが、テキストを折り返す必要がある場合は、高さが大きくなります。

変化する:

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

に:

<Setter Property="MinHeight" Value="60"/>
于 2012-07-18T20:57:01.530 に答える