У меня есть UserFontrol WPF, который я использую в элементе управления WinForms в ElementHostControl. Затем я запускаю окно 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, предотвращая сбой приложения?
Я решил это в конечном итоге, добавив ResourceDictionary в каждое окно вручную через xaml. Таким образом, UserControl в моих WinForms остается незатронутым.
По-прежнему не понимаю, почему это произошло, к сожалению.
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>