如何在代码隐藏中将样式添加到资源字典

本文关键字:添加 样式 资源 字典 代码 隐藏 | 更新日期: 2023-09-27 18:34:05

我有一个名为MyButton.xaml的资源字典,其中定义了x:Type ButtonBase的样式。

我知道如何使用此资源字典来定义XAML中的样式。

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://Application:,,,/Theme;component/MyButton.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="Button" BasedOn="{StaticResource {x:Type ButtonBase}}"/>
    </ResourceDictionary>
</Window.Resources>

我想在代码隐藏中做同样的事情。现在我可以写了

var source = new Uri("Theme;component/MyButton.xaml", UriKind.Relative);
Resources.MergedDictionaries.Add(new ResourceDictionary {Source = source});
var buttonBaseStyle = TryFindResource(typeof (ButtonBase)) as Style;

但是,我不明白如何将此buttonBaseStyle应用于窗口中的所有按钮(即将其用作按钮的默认样式)。谁能告诉我怎么做?

如何在代码隐藏中将样式添加到资源字典

您可以在代码隐藏中添加默认样式,如下所示:

Style btnBaseStyle = TryFindResource(typeof(ButtonBase)) as Style; 
Style s = new Style(typeof(Button), btnBaseStyle);
Resources[typeof (Button)] = s;