WPF - C #: Dieses Element ist zurzeit nicht mit jedem Kontext zugeordnet
-
20-09-2019 - |
Frage
Ich habe eine WPF-Usercontrol, die ich innerhalb eines ElementHostControl in einer WinForms-Steuerelement verwenden. Dann beginne ich ein WPF-Fenster, während die Windows Form noch offen ist. Wenn ich dann schließen die WPF-Fenster, und versuchen, ein Kind Element meiner WPF Usercontrol hinzufügen, stürzt bei „InitializeComponent ()“ (des Kindes Element), mit Ausnahme:
"Eine erste Chance Ausnahme des Typs 'System.Configuration.ConfigurationErrorsException' aufgetreten in System.Configuration.dll. Zusätzliche Informationen: Dieses Element wird derzeit nicht mit jedem Kontext zugeordnet ist "
Ich fand heraus, warum es passiert, aber ich weiß nicht, wie das Problem zu lösen. Wenn ich diesen Code auslassen:
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);
}
}
dann ist alles in Ordnung. Ich brauche diese aber aufgrund der Tatsache, dass meine Resource (und damit meine definierte Styles und Templates auch) über die WPF-Fenster sonst nicht verfügbar ist und Kontrollen. Das fand ich etwa hier aus
Gibt es eine Möglichkeit, das Beste aus beiden Welten zu kombinieren? Keeping meine Resource, während die Anwendung verhindert abstürzt?
Lösung
Ich löste es schließlich durch die Zugabe von Resource in jedem Fenster manuell durch XAML. Auf diese Weise der Usercontrol in meiner WinForms bleibt davon unberührt.
Noch nicht genau verstehen, Warum es abgestürzt ist aber leider nicht.
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>