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

WPF Toolbar removing custom styles for controls placed within it

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

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

有效:

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

这行不通:

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

在这两种情况下,如果按钮放置在工具栏之外,样式就会正确应用!

因此,如果我们查看您的工具栏的 style template,我们会在其中找到它。

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

这是用模板中嵌套的另一种样式明确定义和覆盖您的嵌入式按钮。

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