在WPF / C#中,我想定义一个继承自现有控件的新类,但它使用基本控件的样式。例如:

class MyComboBox : ComboBox
{
    void MyExtraMethod(){...}
}


我通过以下方式动态切换到Luna风格:

 var uri = new Uri("/PresentationFramework.Luna;V3.0.0.0;31bf3856ad364e35;component\\themes/Luna.normalcolor.xaml", UriKind.Relative);
 var r = new ResourceDictionary();
 r.Source = uri;
 this.Resources = r;


尽管这可以使用Luna主题正确设置ComboBox的所有实例的样式,但MyComboBox控件最终以Classic主题结束。如何使MyComboBoxComboBox继承其样式?

我正在用代码编写所有WPF,而不使用XAML标记。我怀疑和Style属性是否相关,但是我还没有弄清楚具体如何。

最佳答案

以下似乎有效:

public class MyComboBox : ComboBox
{
    public MyComboBox()
    {
        SetResourceReference(Control.StyleProperty, typeof(ComboBox));
    }
}

10-04 14:31