我在一个解决方案中有一个Winforms项目和多个WPF项目。在Winform应用程序中,我想打开一个WPF Windows(它是来自Mahapps的MetroWindow,如果重要的话)。
在查看this stackoverflow question的接受答案后,我最终得到了这段代码:
OpenWPFAppButton_Click(object sender, EventArgs e)
{
WPFApp wpfApp = new WPFApp();
ElementHost.EnableModelessKeyboardInterop(wpfApp);
wpfApp.Show();
}
不幸的是,如果我单击按钮会发生XamlParseException,它指向WPFApp.xaml中的第一个Style="{StaticResource ... }"
行(主Xaml文件)。
这是否意味着我无法从包含静态资源的Winforms打开WPF Windows?或者我在这里错过了一些简单的东西?
编辑:以下是App.xaml文件的内容:
<Application x:Class="WPFAppProjectName.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
StartupUri="WPFApp.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Selen.Wpf.SystemStyles;component/ButtonStyles.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Selen.Wpf.SystemStyles;component/MenuStyles.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Selen.Wpf.SystemStyles;component/TextBoxStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
答案 0 :(得分:1)
App.xaml
中最有可能定义了一些公共资源。在通过Windows窗体运行时,该文件未加载,因此这些资源不可用。因此,您会收到此错误。
您可以在Window.xaml
文件中包含资源定义,也可以在每个窗口中包含自己的公共样式资源文件(也称为资源字典)。