В приложении xaml есть 4 глобальных ресурса, которые являются классами, которые мы используем в нашем приложении для поддержания состояния различных элементов.
Вот как они есть в app.xaml
<Application.Resources>
<AMSI:Global x:Key="AMSI.Global"/>
<eFin:Global x:Key="eFinancials.Global" />
<eService:Global x:Key="eService.Global" />
<eSite:Global x:Key="eSite.Global" />
... a bunch of styles and control templates here...
</Application.Resources>
После прочтения главы 23 я решил, что собираюсь почистить некоторые вещи и создать несколько словарей ресурсов.
Итак, я использовал blend, создал два словаря ресурсов и перенес в них все стили.Blend изменил мой xaml следующим образом:
<Application.Resources>
<ResourceDictionary>
<AMSI:Global x:Key="AMSI.Global"/>
<eFin:Global x:Key="eFinancials.Global" />
<eService:Global x:Key="eService.Global" />
<eSite:Global x:Key="eSite.Global" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/ControlStyles.xaml"/>
<ResourceDictionary Source="Resources/DefaultColors.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Хорошо ... отлично.Я был счастлив.Пока я не попытался запустить приложение и получил ошибку инициализации.По-видимому, это происходит в конструкторе одного из вышеупомянутых глобальных объектов, где у нас есть этот код:
var amsiGlobal = Application.Current.Resources["AMSI.Global"] as AMSI.Global;
amsiGlobal.PropertyChanged += new
System.ComponentModel.PropertyChangedEventHandler(amsiGlobal_PropertyChanged);
Он больше не получает ссылку на объект AMSI.Global ... но он работал нормальнодо переезда.
Что я делаю не так.Если я перемещаю эти глобальные объекты за пределы или словари ресурсов, код запускается снова, но blend сообщает мне, что в xaml есть ошибка, он также не находит словари, когда я пытаюсь создать новые шаблоны элементов управления.Кроме того, если я создаю шаблоны элементов управления, они, похоже, не обнаруживаются, даже если они находятся на той же странице, что и элемент управления, ссылающийся на него.Итак, я предполагаю, что во время выполнения будет проблема с.
Есть идеи, что здесь происходит?Мне просто нужно перенести все мои стили и шаблоны обратно в app.xaml?