尝试从Winforms打开WPF窗口时出现XamlParseException

时间:2014-11-16 19:18:48

标签: c# wpf winforms

我在一个解决方案中有一个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文件)。

enter image description here

这是否意味着我无法从包含静态资源的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>

1 个答案:

答案 0 :(得分:1)

App.xaml中最有可能定义了一些公共资源。在通过Windows窗体运行时,该文件未加载,因此这些资源不可用。因此,您会收到此错误。

您可以在Window.xaml文件中包含资源定义,也可以在每个窗口中包含自己的公共样式资源文件(也称为资源字典)。