2

我有一个 WPF UserControl,我在 ElementHostControl 内的 WinForms 控件中使用它。然后我启动一个 WPF 窗口,而 Windows 窗体仍处于打开状态。如果我然后关闭 WPF 窗口,并尝试将子元素添加到我的 WPF 用户控件,它会在(子元素的)“InitializeComponent()”处崩溃,但以下情况除外:

“System.Configuration.dll 中发生了‘System.Configuration.ConfigurationErrorsException’类型的第一次机会异常。附加信息:此元素当前未与任何上下文相关联”

我发现它为什么会发生,但我不知道如何解决这个问题。如果我省略此代码:

public static void EnsureApplicationResources()
    {
        if (Application.Current == null)
        {
            // create the Application object
            new Application();
            string assemblyName = System.IO.Path.GetFileNameWithoutExtension(
                Assembly.GetExecutingAssembly().ManifestModule.Name);

            // merge in your application resources
            Application.Current.Resources.MergedDictionaries.Add(
                Application.LoadComponent(new Uri("/KolonistenClient;component/KolonistenResourceDictionary.xaml", UriKind.RelativeOrAbsolute))
                as ResourceDictionary);
        }
    }

那么一切都很好。不过我需要它,因为我的 ResourceDictionary(以及我定义的样式和模板)在整个 WPF 窗口和控件中不可用。这是我在这里发现的

有什么方法可以结合两全其美?保留我的 ResourceDictionary,同时防止应用程序崩溃?

4

1 回答 1

0

我最终通过 xaml 在每个窗口中手动添加 ResourceDictionary 来解决它。这样我的 WinForms 中的 UserControl 就不会受到影响。

不幸的是,仍然不明白为什么它会崩溃。

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
于 2010-01-16T08:52:41.623 回答