我在适用的资源字典中定义了Style
所有ComboBox
控件。在ComboBox
控件中,我引用了这样的样式:
Style="{DynamicResource MyComboBoxStyle}"
这没问题。
我希望能够为某些ComboBox
控件添加一些触发器。
使用Style
作为动态资源引用的好方法是什么,但仍然可以将Trigger
添加到某些ComboBox
控件中?
答案 0 :(得分:1)
<强>更新强>: 在重新阅读这个问题之后,我意识到这并不是OP所要求的。我可以删除这个,但也许对于偶然发现这个问题的人会有用。
这是一个示例,其中包含定义模板和触发器的xaml资源字典,以及引用该资源并应用样式的窗口。
它可能会帮助有人使用模板和触发器:
我的资源名为“Style1.xaml”
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTemplate x:Key="TonyTemplate" TargetType="Button">
<Border Name="Border"
BorderBrush="Orange"
BorderThickness="3"
CornerRadius="2"
Background="Ivory"
TextBlock.Foreground="Black">
<Grid>
<ContentPresenter RecognizesAccessKey="True"
Margin="{TemplateBinding Padding}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Background" Value="Yellow" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Border" Property="Background" Value="Chartreuse" />
<Setter TargetName="Border" Property="BorderBrush" Value="DarkKhaki" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我的MainWindow代码xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Button Width="100" Height="50"
Template="{StaticResource TonyTemplate}"
Content="Click me"/>
</Grid>
</Window>
答案 1 :(得分:0)
为要应用触发器的ComboBox
控件创建新样式,并使用新样式的BasedOn
属性设置其基本样式。