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

У меня есть пользовательский элемент управления WPF, который я использую в элементе управления WinForms в ElementHostControl. Затем я запускаю окно WPF, пока форма Windows все еще открыта. Если я затем закрою окно WPF и попытаюсь добавить дочерний элемент в свой WPF UserControl, он выйдет из строя в «InitializeComponent ()» (дочернего элемента) с исключением:

«Первое случайное исключение типа« System.Configuration.ConfigurationErrorsException »в System.Configuration.dll. Дополнительная информация: этот элемент в настоящее время не связан ни с каким контекстом»

Я узнал, почему это происходит, но я не знаю, как решить проблему. Если я оставлю этот код:

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


person Xuntar    schedule 15.01.2010    source источник
comment
Кстати: я попытался вызвать метод SureApplicationResources() в моем UserControl и в моем окне WPF (оба до InitializeComponent). Оба способа привели к такому же сбою, как описано в моем вопросе.   -  person Xuntar    schedule 15.01.2010


Ответы (1)


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

Однако, к сожалению, до сих пор не совсем понятно, почему произошел сбой.

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