2011-12-08 15 views
1

と私はXAMLファイルのリソースセクション内のリソース定義の2種類を使用しての問題を抱えている:WPFリソース:のResourceDictionary一緒にXmlDataProvider

これは、エラーがスローされます。

<Window.Resources> 
    <XmlDataProvider x:Key="Maschinen"> 
     <x:XData xmlns=""> 
      <machines> 
       <machine name="alte Maschine"/> 
       <machine name="neue Maschine"/> 
      </machines> 
     </x:XData> 
    </XmlDataProvider> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ShinyRed.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 

と、このまた:

<Window.Resources> 
    <XmlDataProvider x:Key="Maschinen"> 
     <x:XData xmlns=""> 
      <machines> 
       <machine name="alte Maschine"/> 
       <machine name="neue Maschine"/> 
      </machines> 
     </x:XData> 
    </XmlDataProvider> 

    <ResourceDictionary Source="ShinyRed.xaml"/> 
</Window.Resources> 

エラーメッセージを避けるために何をすればよいかわかりますか? ありがとうございました!

+0

このエラーは? –

+0

申し訳ありません。エラーメッセージは次のとおりです。 IDictionaryに追加されたすべてのオブジェクトには、Key属性またはそれに関連する他の種類のキーが必要です。 – manton

+0

上の方がうまくいくはずですか?少なくとも私はxamlにsiomilar構造を持っていて問題はない。 – stijn

答えて

1

ResourceDictionaryに配置されているオブジェクトにはキーを割り当てる必要があります。このキーは暗黙的に(例えばデフォルトスタイルで)または明示的に(例えばStaticResourceDynamicResourceによって)オブジェクトを取得するためにWPFで使用されます。

上記の例では、キーなしでResourceDictionaryを作成したため、エラーになります。あなたが探している構文は次のとおりです。

<Window.Resources> 
    <ResourceDictionary> <!-- Create a resource dictionary here --> 
     <XmlDataProvider x:Key="Maschinen"> <!-- Put this into the dictionary --> 
      <x:XData xmlns=""> 
       <machines> 
        <machine name="alte Maschine"/> 
        <machine name="neue Maschine"/> 
       </machines> 
      </x:XData> 
     </XmlDataProvider> 

     <ResourceDictionary.MergedDictionaries> <!-- Merge into this dictionary another dictionary ... --> 
      <ResourceDictionary Source="ShinyRed.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 

は、上記のスニペットに心の中で最初ResourceDictionaryタグを保管してくださいあなたはそれを残している場合、暗黙的です。その結果、オリジナルの例では、タグ<ResourceDictionary>は、独自の外部辞書に追加される新しい第2の辞書(キーなし)を定義します。

希望すると便利です。

+0

@Ruffell:ありがとう!これが解決策です。 – manton

+0

@mantonの場合、投稿の左上隅にあるVをチェックして回答にしてください(例:http://i.imgur.com/imbXp.pngを参照) – Shimmy

関連する問題