我正在尝试将WPF内容控件的样式设置为动态资源。我可以很容易地做到这一点:
<ContentControl Style="{DynamicResource RibbonGroup}">
...
</ContentControl>
如果我想给content控件添加一个样式触发器,我可以这样做:
<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创建了一个错误,指出属性"Style“被多次设置。
将样式设置为动态资源并包含样式触发器的XAML是什么样子的。
感谢你能提供的任何帮助。
发布于 2019-03-01 04:08:29
正如它所说的,您设置了两次样式。不要这样做,使用basedon将样式作为资源添加到样式中。
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl" BasedOn="{StaticResource RibbonGroup}">
发布于 2019-03-01 15:11:09
你不能将两种不同的风格添加到一个单独的控件中,你必须在一个控件中完成!
<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>}">
https://stackoverflow.com/questions/54932303
复制相似问题