WPF - C#: Este elemento não está atualmente associado a nenhum contexto
-
20-09-2019 - |
Pergunta
Eu tenho um WPF UserControl, que eu uso em um controle WinForms em um elementHostControl. Em seguida, inicio uma janela WPF, enquanto o formulário do Windows ainda está aberto. Se eu fechar a janela WPF e tentar adicionar um elemento filho ao meu WPF UserControl, ele trava em "InitializEComponent ()" (do elemento filho) com a exceção:
"Uma exceção de primeira chance do tipo 'System.configuration.configurationErrorSexception' ocorreu em System.configuration.dll. Informações adicionais: Este elemento não está atualmente associado a nenhum contexto"
Eu descobri por que isso acontece, mas não sei como resolver o problema. Se eu deixar de fora este código:
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);
}
}
Então está tudo bem. Eu preciso disso, porém, devido ao fato de que meu recurso (e, portanto, também meus estilos e modelos definidos) não estão disponíveis em toda a janela e controles do WPF. Isso eu descobri aqui
Existe alguma maneira de combinar o melhor dos dois mundos? Manter meu recurso, impedindo que o aplicativo trava?
Solução
Eu resolvi eventualmente adicionando o recurso em cada janela manualmente através do XAML. Dessa forma, o UserControl em minhas formas de Winform permanece inalterado.
Ainda não entendo exatamente Por quê Infelizmente, ele caiu, infelizmente.
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>