我在資源字典中定義了一個Style
,該資源字典適用於 所有ComboBox
控件。內ComboBox
控制中,我引用的樣式像這樣:資源字典中的WPF參考樣式和使用觸發器
Style="{DynamicResource MyComboBoxStyle}"
該工程確定。
我希望能夠爲某些ComboBox
控件添加一些觸發器。
什麼是使用Style
作爲動態資源的好方法,但仍然可以將Trigger
s添加到某些ComboBox
控件中?
我在資源字典中定義了一個Style
,該資源字典適用於 所有ComboBox
控件。內ComboBox
控制中,我引用的樣式像這樣:資源字典中的WPF參考樣式和使用觸發器
Style="{DynamicResource MyComboBoxStyle}"
該工程確定。
我希望能夠爲某些ComboBox
控件添加一些觸發器。
什麼是使用Style
作爲動態資源的好方法,但仍然可以將Trigger
s添加到某些ComboBox
控件中?
爲要應用觸發器的ComboBox
控件創建新樣式,並使用新樣式的BasedOn
屬性設置其基礎樣式。
更新: 後重新閱讀的問題,我知道這不是正是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