我想更改wpf工具栏的标准样式.我在控制资源中使用以下样式,它工作正常:
<Style x:Key="{x:Type ToolBar}" TargetType="{x:Type ToolBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolBar}">
<Border>
<DockPanel VerticalAlignment="Stretch" Height="38">
</DockPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
但是,如果我向工具栏添加项目,则不会显示以下项目:
<ToolBar x:Name="myToolbar">
<Label>test</Label>
</ToolBar>
Run Code Online (Sandbox Code Playgroud)
我不想在模板中添加项目,而是在使用该模板的特定工具栏中添加项目.
任何人都可以给我一个提示吗?
问题是您用自己的工具栏替换了工具栏的控件模板.但是您没有在该模板中指定应显示项目的位置.通常你可以通过添加ItemsPresenter来实现:
<ControlTemplate TargetType="{x:Type ToolBar}">
<Border>
<DockPanel VerticalAlignment="Stretch" Height="38">
<ItemsPresenter/>
</DockPanel>
</Border>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
或者通过设置IsItemsHost="True"模板内的面板:
<ControlTemplate TargetType="{x:Type ToolBar}">
<Border>
<DockPanel IsItemsHost="True" VerticalAlignment="Stretch" Height="38">
</DockPanel>
</Border>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试替换ToolBar的items面板(如我的第二个示例中所示),它将无法工作,因为ToolBar期望ToolBarPanel成为items面板.