如何在WPF中设置样式和样式触发器
我正在尝试将WPF内容控件的样式设置为动态资源。我很容易做到这一点:如何在WPF中设置样式和样式触发器,wpf,app.xaml,Wpf,App.xaml,我正在尝试将WPF内容控件的样式设置为动态资源。我很容易做到这一点: <ContentControl Style="{DynamicResource RibbonGroup}"> ... </ContentControl> ... 如果要向内容控件添加样式触发器,可以执行以下操作: <ContentControl> <ContentControl.Style> <Style TargetType="ContentCon
<ContentControl Style="{DynamicResource RibbonGroup}">
...
</ContentControl>
...
如果要向内容控件添加样式触发器,可以执行以下操作:
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ShowImport}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=ShowImport}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
...
</ContentControl>
...
如果我尝试组合这些元素来设置控件样式,并使用如下触发器:
<ContentControl Style="{DynamicResource RibbonGroup}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ShowImport}" Value="True">
...
...
此XAML创建了一个错误,表示属性“样式”设置了多次
XAML将样式设置为动态资源并包含样式触发器是什么样子的
感谢您提供的帮助。正如上面所说,您设置了两次样式。如果不这样做,请使用basedon将其添加到作为资源的样式中
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl" BasedOn="{StaticResource RibbonGroup}">
你不能在一个控件中添加两种不同的样式,你必须在一个控件中添加
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ShowImport}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=ShowImport}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
...
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ShowImport}" Value="True">
...
</ContentControl>
...
...
但是,您似乎希望创建两个共享某些属性的样式。在本例中,您可以创建BaseStyle和secund样式,在其中添加BasedOn属性,如下所示:
<Style TargetType="ContentControl" BasedOn="{StaticResource <X:Key_From_Base_Style>}">
谢谢你的建议。我使用的是DynamicSource。不确定这里的StaticResource和DynamicSource是否可以互换。谢谢Andy,我尝试了这个方法,结果是运行时错误:无法在类型为“Style”的“BasedOn”属性上设置“DynamicResourceExtension”。只能对DependencyObject的DependencyProperty设置“DynamicResourceExtension”。Source=PresentationFramework。很抱歉,我不明白这个错误的意思。这意味着我忘记了basedon只与staticresource一起工作。