我有以下內容,很容易重現問題: 我正在創建一個使用另一個文件資源的xaml應用程序。去的方法是創建一個MergedDictionaries標籤合併本地和全球的資源,像這樣:XAML - MergedDictionaries拋出XmlParseException「item已被添加」。爲什麼?
<Window>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="path.to.xaml.file"/>
<ResourceDictionary>
<Style TargetType="{x:Type Border}" x:Key="TypeBlock">
</Style>
<Style TargetType="{x:Type Border}" x:Key="SetBlock">
</Style>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
....
</Window>
這一小段代碼將崩潰,如果你運行它:
Item has already been added. Key in dictionary: 'System.Windows.Controls.Border' Key being added: 'System.Windows.Controls.Border'
如果我們除去MergedDictionaries標籤,代碼將按照預期運行:
<Window>
<Window.Resources>
<Style TargetType="{x:Type Border}" x:Key="TypeBlock">
</Style>
<Style TargetType="{x:Type Border}" x:Key="SetBlock">
</Style>
</Window.Resources>
</Window>
我不明白爲什麼它會拋出當我們使用合併資源除外。 當然,現在修復很容易(將資源移動到較低級別)。這將是很高興知道這是否是'正常'的行爲...
有關搜索特定錯誤消息的人員的其他信息:當意外地使用具有相同'TargetType'且無'x:Key'屬性的兩種樣式時,我遇到了此問題。刪除其中的一個(例如,通過將其內容合併到另一箇中)解決了我的這個問題。 – Jan 2012-01-13 16:19:16