C# 带2个文本的按钮,通过controltemplate绑定

C# 带2个文本的按钮,通过controltemplate绑定,c#,wpf,data-binding,controltemplate,C#,Wpf,Data Binding,Controltemplate,我想做多个这样的按钮 <Button> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"></ColumnDefinition> <ColumnDefinition Width="3*"></ColumnDefinition> </Grid.Colu

我想做多个这样的按钮

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

以这种方式,
快捷方式
绑定到
lblShortcut
Text
lblText
。使用优雅的模板实现这一点的最佳方法是什么?可以在运行时在代码中生成这些按钮?

如果以编程方式设置按钮的数据,则应使用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>

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