我在适用于所有控件Style
的资源字典中定义了一个。ComboBox
在ComboBox
控件中,我像这样引用样式:
Style="{DynamicResource MyComboBoxStyle}"
这工作正常。
我希望能够为某些ComboBox
控件添加一些触发器。
将Style
引用用作动态资源但仍然能够将Trigger
s 添加到某些ComboBox
控件的好方法是什么?
我在适用于所有控件Style
的资源字典中定义了一个。ComboBox
在ComboBox
控件中,我像这样引用样式:
Style="{DynamicResource MyComboBoxStyle}"
这工作正常。
我希望能够为某些ComboBox
控件添加一些触发器。
将Style
引用用作动态资源但仍然能够将Trigger
s 添加到某些ComboBox
控件的好方法是什么?
更新:重新阅读问题后,我意识到这并不是 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>
ComboBox
为要应用触发器的控件创建新样式,并使用BasedOn
新样式的属性设置其基本样式。