2010-01-15 3 views
2

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

«Первый шанс исключение из типа «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 и элементах управления. This I found out about here

Есть ли способ сочетать лучшее из обоих миров? Сохранение моего ResourceDictionary, предотвращая сбой приложения?

+0

КСТАТИ: Я пытался вызова EnsureApplicationResources() метод в моем UserControl и в моем WPF окна (как до InitializeComponent). Оба пути привели к тому же сбою, что и в моем вопросе. – Xuntar

ответ

0

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

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

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