アプリケーションxamlには、さまざまなアイテムの状態を維持するためにアプリケーションで使用するクラスである4つのグローバルリソースがあります。ここでリソースディクショナリでマージすると、App.xamlでリソースを使用できませんか?
は、私はいくつかのものをクリーンアップし、いくつかのリソースディクショナリを作成するつもりだったことを決めた第23章を読んだ後、私たちは、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>
でそれらを持っているかです。
私はblendを使用して2つのリソース辞書を作成し、すべてのスタイルをそれらに移動しました。私の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>
Ok ...素晴らしいです。私は幸せでした。私は、アプリケーションを実行しようとするまで、初期化エラーが発生しました。どうやら我々がこのコードを持っている以上のグローバルオブジェクトの1のコンストラクタで起こりません:
var amsiGlobal = Application.Current.Resources["AMSI.Global"] as AMSI.Global;
amsiGlobal.PropertyChanged += new
System.ComponentModel.PropertyChangedEventHandler(amsiGlobal_PropertyChanged);
それはもはやAMSI.Globalオブジェクトへの参照を得ていた...しかし、それは前に正常に動作していました動く
私は間違っています。これらのグローバルオブジェクトを外部に移動したり、リソース辞書を使用してコードを再実行したりすると、xamlにエラーがあり、ブレンドして新しいコントロールテンプレートを作成しようとすると辞書が見つかりません。また、コントロールテンプレートを作成する場合、コントロールを参照するコントロールと同じページにあっても、コントロールテンプレートは見つからないようです。だから、私は実行時に問題があると思います。
ここで何が起こっているのですか?すべてのスタイルとテンプレートをapp.xamlに戻すだけでいいですか?