如何覆盖模板WPF

时间:2019-03-10 14:22:00

标签: .net wpf xaml

我需要在ComboBox WPF中更改颜色,为此我尝试覆盖模板。 但是如果我这样做

<ComboBox.Template>
            <ControlTemplate>
                <Themes:SystemDropShadowChrome Color="Red"/>
            </ControlTemplate>
</ComboBox.Template>

它只是变成了一个无用的红色立方体,ComboBox的所有其他属性都丢失了,那么如何覆盖模板以更改颜色并保存ComboBox的属性呢?

3 个答案:

答案 0 :(得分:0)

您尝试过吗?

<Setter Property="OverridesDefaultStyle" Value="true" />

答案 1 :(得分:0)

您需要提供一个新模板,而不仅仅是一行。

在此处查看模板:

https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/combobox-styles-and-templates

答案 2 :(得分:0)

根据Microsoft的UG

  

没有办法只替换控件的可视树的一部分;要更改控件的可视树,必须将控件的Template属性设置为其新的完整的ControlTemplate。

您需要描述控件的整个模板。以下是获取控件的完整默认模板的方法:How to Extract Default Control Template In Visual Studio?