0

WPF ボタンで細かいレイアウトの問題を解決するのに苦労しています。基本的に、ボタン内のテキストを中央に配置しようとしていますか? 現時点では、次のようなコードでいくつかのボタンを動的に設定しています

        button1.Content = (option1 != 0.0)
            ? option1.ToString() + "\n"   +  "Centre"
            : string.Empty;
        button2.Content = (option2 != 0.0)
            ? option2.ToString() + "\n"   + "Quite"
            : string.Empty;
        button3.Content = (option3 != 0.0)
            ? option.ToString() + "\n" + "Not"
            : string.Empty;

XAMLでは、垂直方向と水平方向の両方のコンテンツの配置が中央ですか?

<Button Height="30" HorizontalAlignment="Left" Margin="254,0,0,0" Name="button1"
     VerticalAlignment="Top" Width="50" Click="button_Click" 
    HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="10"
       FontStretch="SemiCondensed"/>

しかし、これは私が望むレイアウトを私に与えません(以下を参照)

ここに画像の説明を入力

  1. 上部の値を中央に配置し、下部のテキストを中央に配置するにはどうすればよいですか?

  2. 下のテキストのフォント サイズを 10太字にし、上のテキストをフォント サイズ 14 の標準にしたい場合、どうすればよいですか?

どうもありがとう

4

3 に答える 3

2

最も簡単な方法は、Button 内で 2 つの Textblock を使用し、データバインディングをセットアップすることだと思います。

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<StackPanel Orientation="Horizontal" TextBlock.TextAlignment="Center" >
    <Button Height="50" Width="80">
        <StackPanel>
            <TextBlock Text="{Binding Text1}" FontSize="14"  />
            <TextBlock Text="{Binding Text2}" FontSize="10"  FontWeight="Bold"/>
        </StackPanel>
    </Button>
</StackPanel>

public partial class MainWindow : Window
{
     public string Text1 { get; set; }
    public string Text2 { get; set; }

    public MainWindow()
    {
        InitializeComponent();
        Text1 = "10";
        Text2 = "TEST Test";
        DataContext = this;
    }
}

このパターンをまだ知らない場合は、MVVM / INotifyPropertychanged チュートリアルもお読みください (私の例ではこのインターフェイスを実装していないため、TextX プロパティを変更してもボタンの内容は更新されません)。

于 2012-09-07T18:29:08.797 に答える
1
    <StackPanel Visibility="{Binding Path=Option1, Converter={StaticResource myDoubleToVisibilityConverter}}">
        <TextBlock HorizontalAlignment="Center" Text="{Binding Path=Option1}"/>
        <TextBlock HorizontalAlignment="Center" Text="Center" />
    </StackPanel>

これで、コードにテキストを設定する必要はありません。myDoubleToVisibilityConverterおよびINotifyPropertyChangedインターフェイスを実現するだけです

この場合、Buttonのコンテンツを直接設定することは、WPFイデオロギーに対するある種の違反です。

于 2012-09-07T20:37:09.077 に答える
0

このコードで試してください (\r\n)

 button1.Content = (option1 != 0.0)
            ? option1.ToString() + "\r\n"   +  "Centre"
            : string.Empty;

使用することもできますEnvironment.NewLine

于 2012-09-07T18:25:41.550 に答える