2

このようなボタンを複数作りたい

<Button>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"></ColumnDefinition>
            <ColumnDefinition Width="3*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Label Grid.Column="0" name="lblShortcut">F1</Label>
        <Label Grid.Column="1" name="lblText">search</Label>
    </Grid>
</Button>

したがって、テンプレートのようなものを使用する必要があることはわかっており、これらのボタンを次のようなクラスにバインドしたいと考えています。

class SearchButtonContent
{
    public string Shortcut { get ; set; }
    public string Text { get ; set; }
}

a がおよびにShortcutバインドされるような方法で。実行時にコードでこれらのボタンを作成する可能性があるエレガントなテンプレートでこれを達成する最良の方法は何ですか?lblShortcutTextlblText

4

1 に答える 1

1

ボタンのデータをプログラムで設定する場合は、DataTemplate タイプのContentTemplateプロパティを使用する必要があります。

必要なのは、Button.Content を SearchButtonContent クラスのインスタンスに割り当てることだけです。

<Button>
    <Button.ContentTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*"></ColumnDefinition>
                    <ColumnDefinition Width="3*"></ColumnDefinition>
                </Grid.ColumnDefinitions>

                <Label Grid.Column="0" name="lblShortcut" Content="{Binding Shortcut }"/>
                <Label Grid.Column="1" name="lblText" Content="{Binding Text}"/>
            </Grid>

        </DataTemplate>
    </Button.ContentTemplate>
</Button>
于 2012-11-06T14:14:58.620 に答える