WPF工具栏删除其中放置的控件的自定义样式

时间:2016-01-07 13:23:06

标签: c# wpf xaml styles controltemplate

我已经为按钮和文本框定义了通用主题(少关键,基于类型的样式)。 当我在窗口中创建一个合并这些资源的按钮实例时,样式会正确呈现。但是对于托管在ToolBar中的相同按钮,不应用样式;该样式将恢复为Windows默认值。 知道为什么吗?

P.S:如果我明确地设置了ToolBar中托管的按钮的样式,那么它可以正常工作,但这是我不想做的事情。

这有效:

            <ToolBarTray>
                <ToolBar Band="1"
                         BandIndex="1">
                    <Button Content="Add" Style="{DynamicResource ResourceKey={x:Type Button}}" />
                </ToolBar>
            </ToolBarTray>

enter image description here

这不起作用:

            <ToolBarTray>
                <ToolBar Band="1"
                         BandIndex="1">
                    <Button Content="Add" />
                </ToolBar>
            </ToolBarTray>

enter image description here

在这两种情况下,如果按钮位于工具栏外部,则会正确应用样式!

1 个答案:

答案 0 :(得分:2)

因此,如果我们查看工具栏的style template,我们会在那里找到。

<Style x:Key="{x:Static ToolBar.ButtonStyleKey}"
       BasedOn="{StaticResource ToolBarButtonBaseStyle}"
       TargetType="{x:Type Button}" />

使用嵌套在模板中的另一种样式明确定义和覆盖嵌入的Button。

您可以在模板中更改或删除它,也可以在实例级别覆盖它,只需将BasedOn值更改为指向您自己的样式模板即可。网上还有教程可以为工具栏设置样式以获取更多详细信息。希望这会有所帮助。