我使用Visual Studio 2010创建了一个WPF应用程序,将App.xaml转换为Page并在构造函数中添加了对InitializeComponent的调用。然后我创建了一个名为“LoginWindow”的新窗口,并将以下内容添加到App.xaml.cs中:
[STAThread]
public static void Main()
{
var app = new App();
app.Run(new LoginWindow());
}
接下来,我向App.xaml添加了一个样式,如下所示:
<Style x:Key="MyWindowStyle" TargetType="Window">
<Setter Property="Background" Value="Red" />
</Style>
最后,在LoginWindow中我添加了以下样式引用:
Style="{StaticResource MyWindowStyle}"
当我运行程序时,我看到我的登录窗口有一个红色背景,如预期的那样。但是,当我在设计器中查看窗口时,未应用样式。 {StaticResource MyWindowStyle}是下划线并显示错误,“资源'MyWindowStyle'无法解析”。
为什么会这样?
修改
我得到了另一个问题的解决方案,这个问题也解决了这个问题。我停止了app.xaml作为一个页面并使用了StartUp而不是Main方法。
答案 0 :(得分:1)
我不确定您的设计师问题的原因,但我的建议是回到默认的WPF应用程序模板,看看是否有效。
App.xaml
是一个重要文件,不应转换为页面(您应该添加单独的页面),并且您不需要使用Main
方法来启动应用程序:默认app.xaml
文件,您会看到(在默认项目中)StartupUri="MainWindow.xaml"
的属性 - 使用该属性指向您的LoginWindow.xaml
。
我刚刚在VS中尝试使用标准模板进行检查,我认为没问题。为了确认,我所做的就是将你的风格添加到(默认)app.xaml
文件中,并以与你相同的方式将其应用到我的窗口 - 它在设计师中显示得很好。
答案 1 :(得分:0)
它没有出现在设计器中的原因是它只查看UserControl /任何+任何名为App的XAML的应用程序。由于您将App.Xaml设置为页面,因此设计人员无法知道UserControl将托管在其中。在运行时,WPF将查看Page和它可能拥有的任何Parent(包括Parent的Parent等)。
相反,让App.xaml指向一个'dummy'页面,在其中覆盖Loaded-event导航到带有DataContext集的右页面。