我已经定制使用的ControlTemplate像这样切换按钮控件:更改样式控件中的控件模板的一部分?
<StackPanel>
<StackPanel.Resources>
<Style x:Key="OptionBarButton" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border Padding="18,12,18,12" Background="{TemplateBinding Background}">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="DarkBlue" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="SkyBlue" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="False" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#88000000" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="False" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#F0000000" />
</MultiTrigger.Setters>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</StackPanel.Resources>
<ToggleButton Style="{StaticResource OptionBarButton}">
<Image Source="../Assets/icons/action.png" Height="26" RenderOptions.BitmapScalingMode="Fant" />
</ToggleButton>
<ToggleButton Style="{StaticResource OptionBarButton}">
<Image Source="../Assets/icons/action2.png" Height="26" RenderOptions.BitmapScalingMode="Fant" />
</ToggleButton>
</StackPanel>
这工作得很好,但是我现在要更改模板的某些部分在一些风格的控制,即器isChecked颜色状态的(天蓝色/ DarkBlue)。
在使用它时,是否可以修改/传递模板中的这些颜色?我知道我可以使用附加属性或/和子类的ToggleButton类(添加依赖属性),但我想知道是否没有更通俗的方式来解决这个问题,也许只能用xaml。使用C#编写自定义代码似乎对于这样一个简单的用例有点矫枉过正?
啊,这太好了。我绝对可以看到这在其他情况下也很有用。谢谢! – monoceres