WPF - C #: этот элемент в настоящее время не связан ни с одним контекстом

2

У меня есть 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, предотвращая сбой приложения?

  • 0
    Кстати: я попытался вызвать метод EnsureApplicationResources () в моем UserControl и в моем окне WPF (оба до InitializeComponent). Оба пути привели к одному и тому же сбою, как описано в моем вопросе.
Теги:
wpf
elementhost
resourcedictionary

1 ответ

0
Лучший ответ

Я решил это в конечном итоге, добавив ResourceDictionary в каждое окно вручную через xaml. Таким образом, UserControl в моих WinForms остается незатронутым.

По-прежнему не понимаю, почему это произошло, к сожалению.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню