Разве вы не можете иметь ресурсы в App.xaml, если объединяете словари ресурсов? - PullRequest
0 голосов
/ 17 января 2011

В приложении 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?

1 Ответ

1 голос
/ 27 февраля 2011

Я немного новичок в Silverlight, но вы пробовали добавить

<AMSI:Global x:Key="AMSI.Global"/>
  <eFin:Global x:Key="eFinancials.Global" />
  <eService:Global x:Key="eService.Global" /> 
  <eSite:Global x:Key="eSite.Global" />

в Объединенные словари?это будет выглядеть примерно так* Привет

...