资源字典中的WPF参考样式和使用触发器
问题描述:
我在资源字典中定义了一个Style
,该资源字典适用于 所有ComboBox
控件。内ComboBox
控制中,我引用的样式像这样:资源字典中的WPF参考样式和使用触发器
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>
我主窗口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>
当我尝试这样做时,出现以下错误: 无法在'Style'类型的'BasedOn'属性上设置'DynamicResourceExtension'。 – 2010-04-19 16:08:30
为什么你使用DynamicResource呢? StaticResource应该用于设置样式。 – Charlie 2010-04-19 16:52:49
样式位于单独的模块中(使用CAL),所以我必须指定DynamicResource才能使用它。 – 2010-04-21 12:22:00