2011-12-08 184 views
1
我有一個XAML文件的資源節用兩種不同的資源定義的問題

在一起:WPF資源:資源字典與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中的任何對象都必須分配一個鍵。該鍵由WPF用來隱式地(例如通過默認樣式)或明確地(例如通過StaticResource,DynamicResource)來檢索對象。

在上例中,您創建了一個沒有密鑰的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>自行定義了要添加到外部字典的新的第二個字典(不帶鍵)。

希望這會有所幫助!

+0

@Ruffell:謝謝!這是解決方案。 – manton

+0

@manton,請通過檢查帖子左上角的V來標記答案(請參閱示例:http://i.imgur.com/imbXp.png) – Shimmy