2016-04-12 18 views
1

App.xamlでグローバルクラスを設定しようとしています。WPFグローバルクラスMVVM

<Application.Resources> 
    <local:MySettingsClass x:Key="GlobalSettings" /> 
    <ResourceDictionary > 
     <!-- My Resources --> 
    </ResourceDictionary > 
</Application.Resources> 

私は

のエラーメッセージを取得していますが、各辞書のエントリには、関連付けられたキーを持っている必要があります。

「アプリケーション」は「のInitializeComponent」の定義なし拡張メソッドが含まれていません「のInitializeComponent」タイプの最初の引数「アプリケーション」は見つけることができる受諾(あなたが使用して不足していますディレクティブまたはアセンブリ参照?)

は、今私はで行くことができると、それは間違っていると思われるので、x:KeyResourceDictionaryに私が見たことがない誰もが、それを行います。 2番目のエラーメッセージは私がこれを間違っていると信じさせる。

この問題に間違った解決策があるのでしょうか、それとも簡単ではありませんか?

答えて

3

Application.Resourcesは暗黙的にリソース辞書です。あなたはそこですぐにリソースを叩くことができます。これは有効な次のようになります。

<Application.Resources> 
    <local:MySettingsClass x:Key="GlobalSettings" /> 
    <!-- Pretty much anything with an x:Key attribute. --> 
</Application.Resources> 

しかし、あなたは、明示的<ResourceDictionary>タグが必要です辞書をマージしていて、通常はApp.xamlにあなたは辞書をマージしている場合。

あなたが遭遇した問題は、XAMLで最初に目にするのは、何よりも先にGlobalSettingsリソースです。それが最初に見えるものなので、ここではいくつかのリソースを叩いているだけです。それはResourceDictionaryを作成し、それが見るすべてを追加します。次に表示されるのは<ResourceDictionary>で、リソースとして最初のリソース辞書に別のリソース辞書を追加しようとしていると考えられますが、x:Key属性はありません。私はちょうど今試しました。それはx:Keyで1つ追加しました。それを行う理由はわかりません。リソースを外側のものにマージしませんでした。

これを試してください:あなたはInitializeComponentのエラーを得続ける場合

<Application.Resources> 
    <ResourceDictionary> 
     <!-- One of My Resources --> 
     <local:MySettingsClass x:Key="GlobalSettings" /> 

     <!-- My Other Resources --> 

     <ResourceDictionary.MergedDictionaries> 
      <!-- Merged dictionaries --> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

、App.xaml.cs

のためにあなたのコードを共有してください
+1

おかげで、それは簡単なものだった考え出し。私はResourceDictionaryに移動し、エラーが発生しました。もともと、それは同じエラーだと思った、それは別の何かだった。 – Xaphann

+0

@Xaphann Awesome。 –