WPF - C#:此元素当前未与任何上下文相关联

时间:2010-01-15 17:22:35

标签: c# .net wpf resourcedictionary elementhost

我有一个WPF UserControl,我在ElementHostControl中的WinForms控件中使用它。然后我启动一个WPF窗口,而Windows窗体仍然打开。如果我然后关闭WPF窗口,并尝试将一个子元素添加到我的WPF UserControl,它会在“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窗口和控件中都不可用。 This I found out about here

有没有办法结合两全其美?保持我的ResourceDictionary,同时防止应用程序崩溃?

1 个答案:

答案 0 :(得分:0)

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

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

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>