访问按钮样式中内容的属性

本文关键字:属性 按钮 样式 访问 | 更新日期: 2023-09-27 18:24:08

我正在尝试为按钮创建一个ControlTemplate,并将CommandParameter绑定到按钮Content的某个属性。

目前情况如下:

<Style x:Key="MyStyleKey" TargetType="{x:Type Button}">
    <Setter Property="controls:ButtonHelper.CornerRadius" Value="3"/>
    // stuck here
    <Setter Property="CommandParameter" Value="{Binding ((SomeDataClass)Content).Id}" /> 
    <Setter Property="Template">
        <Setter.Value>
            // ...
        </Setter.Value>
    </Setter>
</Style>

称为

<Button Command="{Binding SetActive}" Content="{Binding SomeDataObject}" Style="{DynamicResource MyStyleKey}" />

通常我会直接设置CommandParameter

<Button Command="{Binding SetActive}" CommandParameter="{Binding SomeDataObject.Id}" Content="{Binding SomeDataObject}" Style="{DynamicResource MyStyleKey}" />

我对模板的理解是不要重复自己。由于Id-属性是按钮Content的一部分,将其作为CommandParameter传递给模板是完全有意义的。

访问按钮样式中内容的属性

您需要设置相对来源:

<Setter Property="CommandParameter" Value="{Binding Content.Id, RelativeSource={RelativeSource Mode=Self}}"/>