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
值以指向您自己的样式模板。网上还有关于工具栏样式的教程,以获取更多详细信息。希望这有帮助。
我已经为按钮和文本框定义了通用主题(无键,基于类型的样式)。 当我在合并这些资源的 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
值以指向您自己的样式模板。网上还有关于工具栏样式的教程,以获取更多详细信息。希望这有帮助。