我正在创建自己的单选按钮。我只想更改它的图形。他们看起来像他们想要的样子,但是我无法更改IsChecked
的外观...这就是我到目前为止所拥有的
<RadioButton x:Class="gMaterialWPF.MaterialRadioButton" [....]>
<RadioButton.Style>
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border x:Name="backPanel"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="10">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</RadioButton.Style>
</RadioButton>
问题是如何访问backPannel来更改<Trigger Property="IsChecked"
的颜色?我尝试使用TargetName,但是找不到那边的面板:(
答案 0 :(得分:1)
我尝试了
TargetName
,但找不到那里的面板:(
如果要使用ControlTemplate
属性引用Border
元素,则需要将触发器移至TargetName
:
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border x:Name="backPanel"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="10">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="backPanel" Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
但是由于您在示例中使用Background
将Border
元素的Background
属性绑定到RadioButton
的{{1}}属性,因此您真的不必使用TemplateBinding
。
答案 1 :(得分:0)
您可以从RadioButton.IsChecked
的{{1}}访问Style.Triggers
:
Border