访问wpf中的内置样式

访问wpf中的内置样式,wpf,templates,button,styles,Wpf,Templates,Button,Styles,当我将按钮放在工具栏上时,其样式会自动更改以匹配工具栏元素 我从一个ToggleButton派生了自己的类,现在如果我在工具栏上实例化一个,它看起来又像普通的按钮了。如何访问WPF的内置模板,这样我就不必从头开始重新创建整个模板?您可以像这样在自定义切换按钮上应用样式,使其看起来像工具栏切换按钮- <local:LockableToggleButton LockToggle="True" Content="Test" Style="{StaticResource {x:Sta

当我将按钮放在工具栏上时,其样式会自动更改以匹配工具栏元素


我从一个ToggleButton派生了自己的类,现在如果我在工具栏上实例化一个,它看起来又像普通的按钮了。如何访问WPF的内置模板,这样我就不必从头开始重新创建整个模板?

您可以像这样在自定义切换按钮上应用
样式
,使其看起来像工具栏切换按钮-

<local:LockableToggleButton LockToggle="True" Content="Test"
       Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"/>

显然,工具栏为一些控件定义了资源,包括
按钮
切换按钮
。这些样式(可以在工具栏的元数据中找到)应用于其目标类型的每个控件。因此,您可以获得样式并自己应用:

    <ToolBar>
        <my:CustomToggleButton 
            Height="100" Width="100" 
            Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}" 
            Content="Press me!" />
    </ToolBar>


如果您有很多按钮,并且不想为每个按钮设置样式,您可以在自定义控件的codebehind中设置样式。

您可以使用
VisualTreeHelper
和/或
LogicalTreeHelper
访问
OnApplyTemplate
覆盖中的模板更改。扩展切换按钮类?你改变模板了吗?目前,我更改了模板以更改其外观,但我不希望这样做。