我正在使用XAML样式使用自己的图像创建自定义单选按钮。该风格使用触发器根据焦点,按下等改变按钮的外观。这是风格:
<Style x:Key="SmallButtonAsRadioButton" TargetType="RadioButton">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Grid x:Name="Container">
<Image x:Name="img" Source="/Resources/Elements/Buttons/10.png" Margin="6" />
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/11.png" />
<Setter TargetName="img" Property="Margin" Value="0" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsKeyboardFocused" Value="True" />
<Condition Property="IsChecked" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/12.png" />
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsKeyboardFocused" Value="False" />
<Condition Property="IsChecked" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/12a.png" />
<Setter TargetName="img" Property="Margin" Value="6" />
</MultiTrigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="img" Property="Source" Value="/Resources/Elements/Buttons/12.png" />
<Setter TargetName="img" Property="Margin" Value="0" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我需要创建一个基于此的新样式,使用不同的图像。显然,我想重用这种风格,但我不知道如何覆盖这些图像设置器。类似的东西:
<Style x:Key="SmallButtonAsRadioButtonBlue" BasedOn="{StaticResource SmallButtonAsRadioButton}" TargetType="RadioButton">
<Setter - (Override image...
<Setter - (Override image...
感谢任何见解。
答案 0 :(得分:1)
您可以做的是从您自己的自定义控件中的单选按钮派生,并将图像作为属性。然后你不必覆盖样式(你可以只定义一次),每次你想使用不同的图像,你可以在xaml中设置它们。 (或样式 - 无需再次重做控制模板,只需使用setter)