WPF - C #: Questo elemento non è attualmente associato con qualsiasi contesto
-
20-09-2019 - |
Domanda
Ho un UserControl WPF, che uso in un controllo all'interno di un WinForms ElementHostControl. Poi comincio una finestra WPF, mentre la forma di Windows è ancora aperto. Se io quindi chiudere la finestra WPF, e provo ad aggiungere un elemento figlio al mio WPF UserControl, si blocca al "InitializeComponent ()" (dell'Elemento Bambino) con l'eccezione:
"Una prima eccezione di possibilità di tipo 'System.Configuration.ConfigurationErrorsException' si è verificato in System.Configuration.dll. Ulteriori informazioni: Questo elemento non è attualmente associato a qualsiasi contesto "
ho scoperto perché succede, ma non so come risolvere il problema. Se lascio questo codice:
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);
}
}
allora tutto va bene. Ho bisogno che però, a causa del fatto che la mia ResourceDictionary (e quindi anche i miei stili e modelli definiti) non altrimenti disponibili in tutta la finestra e controlli WPF. Questo ho scoperto qui
C'è un modo per combinare il meglio dei due mondi? Mantenendo la mia ResourceDictionary, evitando l'applicazione di schiantarsi?
Soluzione
ho risolto eventualmente aggiungendo il ResourceDictionary in ciascuna finestra manualmente tramite XAML. In questo modo l'UserControl nei miei WinForms rimane inalterato.
Ancora non capire esattamente perché si è schiantato se, purtroppo.
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>