2011-11-11 11 views
1

私は、このような(MyResourceDictionary)などのResourceDictionaryを持っている:複数のResourceDictionaryと同じDataTemplateキーを使用していますか?

<ResourceDictionary xmlns 
     ..... 
     > 

     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="SeriesTwo.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 

     <DataTemplate x:Key="SeriesDetailedInformation"> 
      <StackPanel> 
       ......content... 
      </StackPanel> 
     </DataTemplate> 
</ResourceDictionary> 

SeriesTwo.xamlは、次のようになりますし、また私のビューページ、SeriesDetailedInformationデータテンプレートにDataTemplateの同じ名前を持つ

<ResourceDictionary xmlns= 
     ..... 
     > 
     <DataTemplate x:Key="SeriesDetailedInformation"> 
      <DataGrid> 
       ......content... 
      </DataGrid> 
     </DataTemplate> 
</ResourceDictionary> 

を持っています使用されますか?それは私のページで最初に参照するリソース辞書に依存しますか?

このトピックに関する良いリンクやその他の資料もありがとうございます。

答えて

2

this pageから物事のカップルは、あなたの質問に関連しているようだ:

MergedDictionariesコレクション内

ルックアップ動作は、最初 最後に追加のResourceDictionaryを検索し、検索はすぐに 要求されたキーが見つかったとして停止します。言い換えれば、マージされたリソース辞書の コレクションからの検索ロジックは、最後に最初に出てきます。

そして:

リソースをマージされた辞書には、ちょうど彼らがにマージされている主なリソース 辞書の範囲の後にあるリソース 検索範囲内の位置を占めます。このことから

私はあなたのメイン辞書に定義されてDataTemplateはSeriesTwo、その後、最初に使用されるだろう、といずれかが、その後の前/ SeriesTwo上で参照することを集めます。

さらに、試してみるとどうなりますか?私は「DumbCrapTestApp」と呼ばれるソリューションを維持しています。ここでは、何かがうまくいくかどうか不思議です。それは言語の中で何かをテストする必要があるときのためのコンソールアプリと、何かを試したいときのためのWPFとSilverlightアプリを持っています。私がWinFormsアプリケーションが必要だった場合、私はちょうど1つを追加し、私のものをそこにします。私はテストしたいコードを関連するアプリに入れ、スタートアッププロジェクトとして設定し、離れて行くだけです。これらの小さなことを理解するのには本当に便利です。私はそれをここに投稿する前に、解明と回答の検証に使用しました。

+0

ありがとうございました。 「なぜそれを試してみて、何が起こるかを見てみるのはなぜですか?」私は怠け者であったため、脳裏を持ち、ドキュメントを自分で見ているとは思えませんでした。 – VoodooChild

関連する問題