访问 属性 按钮样式的内容

Access property of content within button-style

我正在尝试为按钮创建一个 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 传递给模板是完全有意义的。

您需要设置relative source:

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