代码之家  ›  专栏  ›  技术社区  ›  user4134476

如何在代码隐藏中将样式添加到ResourceDictionary

  •  2
  • user4134476  · 技术社区  · 8 年前

    我有一个名为MyButton的ResourceDictionary。xaml,其中定义了x:Type ButtonBase的样式。

    我知道如何使用这个ResourceDictionary来定义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 窗口中的所有按钮(即将其用作按钮的默认样式)。 有人能告诉我怎么做吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   nkoniishvt    8 年前

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

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