在运行时从子内容内部更改宿主元素的DefaultStyle

时间:2019-04-28 19:14:27

标签: c# wpf styles

我有一个Win32应用程序,该应用程序托管一个HostSource来显示WPF ContentControl。 ContentControl将我的UserControl接收为Content,并将其显示在Win32应用程序中。 ContentControl看起来像这样

public class CustomContentControlWPF : ContentControl
{
    public static CustomContentControlWPF()
    { 
         FrameworkElement.DefaultStyleKeyProperty.
         OverrideMetadata(typeof(CustomContentControlWPF),
         new FrameworkPropertyMetadata(typeof(CustomContentControlWPF)));
    }
}

问题是我不喜欢将要应用的样式。我无法修改定义CustomContentControlWPF的程序集的代码。 是否可以在运行时从托管子UserControl内部更改CustomContentControlWPF的样式?

我确实尝试过这样的事情:

public MyUserControl : UserControl
{
    public void changeStyle()
    {
        FrameworkElement.DefaultStyleKeyProperty.
         OverrideMetadata(typeof(CustomContentControlWPF),
         new FrameworkPropertyMetadata(typeof(UserControl)));
    }
}

但这失败了,因为CustomContentControlWPF类型的样式已经被覆盖。

有什么想法吗?

0 个答案:

没有答案