我在wpf proyect中使用资源字典。 字典有这两种风格:
<Style x:Key="MyMenu" TargetType="Menu">
<Setter Property="Background" Value="Black"/>
<Setter Property="Foreground" Value="White"/>
</Style>
<Style x:Key="MyToolbar" TargetType="ToolBar">
<Setter Property="Background" Value="Black"/>
</Style>
在我的XAML文件中,我使用以下两种样式:
菜单:
<Menu Name="menuMainBar" Style="{DynamicResource MyMenu}" IsMainMenu="True" VerticalAlignment="Top" Margin="0,10,0,0">
<MenuItem ...
</Menu>
对于工具栏:
<ToolBarTray Name="toolBarTrayRigth_wargames" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" Width="50">
<ToolBar Name="toolBarRigth_wargames" Style="{StaticResource MyToolbar}" BorderThickness="0,0,1,0">
<Button ...
</ToolBar>
</ToolBarTray>
结果如下:
您可以注意到,菜单正确地采用了样式,但工具栏完全不受样式的影响。
我尝试从toolbartray标记中删除所有样式元素,如下所示:
<ToolBarTray Name="toolBarTrayRigth_wargames">
...
</ToolBarTray>
现在工具栏正常工作,但正如您所看到的,现在toolbarTray不是我想要的样子(我想要一个垂直工具栏,而不是水平工具栏):
我还尝试直接在xaml文件中设置ToolBar的背景:
<ToolBarTray Name="toolBarTrayRigth_wargames" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" Width="50">
<ToolBar Name="toolBarRigth_wargames" BorderThickness="0,0,1,0" Background="Black">
<Button ...
</ToolBar>
</ToolBarTray>
......它有效:
但我不想这样做,我想使用资源字典作为我工具栏的风格。
关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
我奇怪地发现,如果我将父ToolBarTray的Orientation设置为Horizontal,那么你的ToolBar样式就可以在ToolBar上设置背景。
我还发现,如果ToolBarTray方向仍为Vertical,则可以设置ToolBar的背景:
<Style x:Key="MyToolbar" TargetType="ToolBar">
<Style.Triggers>
<!--
This is intentional. A conventional setter was found not to set the background
when the parent ToolBarTray's Orientation was Vertical.
-->
<DataTrigger Binding="{Binding Source={x:Null}}" Value="{x:Null}">
<Setter Property="Background" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
我发现这很奇怪。
答案 1 :(得分:0)
正如@EdPlunkett发现的那样,visibilityFilter
中垂直方向的默认模板中有一个奇怪的Setter
:
Trigger
您可以编辑模板(在 <Trigger Property="Orientation" Value="Vertical">
<Setter Property="Margin" TargetName="Grid" Value="1,3,1,1"/>
<Setter Property="Style" TargetName="OverflowButton">
<Setter.Value>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="#FFEEF5FD"/>
面板中,右键单击ToolBar元素&gt;编辑模板&gt;编辑副本...),然后删除此Setter。