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

StackOverflow https://stackoverflow.com/questions/2073497

Вопрос

У меня есть пользовательский элемент управления 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top