0

我有一个名为的类MyWindow,它派生自Window

using System.Windows;

public class MyWindow : Window
{
}

我使用该类MainWindow.xaml

<MyWpfApp:MyWindow x:Class="MyWpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wpfApplication1="clr-namespace:WpfApplication1"
          Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock Text="Test" Foreground="Orange"/>
    </Grid>
</MyWpfApp:MyWindow>

App.xaml文件中,我添加了以下样式来覆盖Background所有MyWindow实例的属性:

<Application.Resources>
    <Style TargetType="MyWpfApp:MyWindow">
        <Setter Property="Background" Value="Black"></Setter>
    </Style>
</Application.Resources>

但这根本不会改变任何事情。没有样式应用于MainWindow

我应该怎么做才能对所有MyWindows 使用全局样式?

PS:我检查了“ Modern UI ”的代码,我看到他们在窗口的构造函数中应用了如下内容:

using System.Windows;

public class MyWindow : Window
{
    public MyWindow()
    {
        DefaultSyleKey = typeof (MyWindow);
    }
}

但如果我这样做,MainWindow 最终会在内容区域完全变黑。我猜想它的Template属性会以某种方式被覆盖,但我不明白如何以及如何使其工作。

4

1 回答 1

1

好的,我已经解决了。显然有一个特殊的文件可以使用 named generic.xaml

您需要在此处添加样式定义,然后将该文件添加到名为Themes.

WPF 最终将使用它作为后备:Themes\generic.xaml

于 2013-05-13T01:03:53.403 回答