替换所有控件的默认WPF主题样式

时间:2015-04-30 08:46:31

标签: c# wpf xaml

我尝试在我的WPF项目中替换所有控件的默认样式。 我像这样创建了ResourceDictionary

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Black"/>
    </Style>
</ResourceDictionary>

在我的App.Xaml我写了这个:

<Application.Resources>
    <ResourceDictionary >
        <ResourceDictionary.MergedDictionaries >
            <ResourceDictionary  Source="pack://application:,,,/MYTestTheme;component/Themes/Aero.NormalColor.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

现在在MainWindow.Xaml我创建了一个按钮,风格就在它上面。 我想要创建一个从按钮

继承的新按钮MyButton

我希望每个Button定义的样式都放在MyButton上,当我将它放在我的MainWindow.Xaml上时,但这种情况不会发生。

另一个我不想使用BasedOn的重要事项。

我在一些博客上看到了这段代码:

<Application>
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source=”{ThemeDictionary MyApplication}”/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

但它没有用!!!

由于

1 个答案:

答案 0 :(得分:0)

为您的密钥命名:

<Style x:Key="MyButton" TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Black"/>
</Style>

并将其添加到App.XAML中(在Application.Resources块之外):

<Style TargetType="{x:Type Button}" BasedOn="{StaticResource MyButton}" />