我想像这样制作多个按钮

<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>


所以我知道我必须使用诸如Template之类的东西,并且我想将这些按钮绑定到这样的类上:

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


这样,将Shortcut绑定到lblShortcut,将Text绑定到lblText。用优雅的模板实现此目的的最佳方法是什么,并有可能在运行时在代码中创建这些按钮?

最佳答案

如果以编程方式设置按钮的数据,则应使用ContentTemplate属性,该属性为DataTemplate类型

您唯一需要做的就是为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>

09-06 03:34