Aşağıdakileri yeniden üretmek çok kolay: Başka bir dosyadan kaynakları kullanan bir xaml uygulaması oluşturuyorum. Eğer çalıştırırsanızXAML - XmlParseException öğesini birleştirilmiş "Birleştirilmiş öğeler" zaten eklendi. Niye ya?
<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>
Bu kod parça kilitlenmesine:
Item has already been added. Key in dictionary: 'System.Windows.Controls.Border' Key being added: 'System.Windows.Controls.Border'
biz gitmek için yolu bu gibi yerel ve küresel kaynaklar birleştirmek için bir MergedDictionaries-etiketi oluşturmaktır MergedDictionaries-etiketi kaldırmak, kod beklendiği gibi çalışacaktır: biz Birleştirilmiş Kaynakları kullanmak istisna atar neden anlamıyorum
<Window>
<Window.Resources>
<Style TargetType="{x:Type Border}" x:Key="TypeBlock">
</Style>
<Style TargetType="{x:Type Border}" x:Key="SetBlock">
</Style>
</Window.Resources>
</Window>
. Elbette, düzeltme şu an için yeterince kolay (kaynakları daha düşük bir seviyeye taşıyın). Bu 'normal' davranışı olup olmadığını bilmek güzel olurdu ...
Belirli bir hata iletisini arayan kullanıcılar için ek bilgi: Yanlışlıkla aynı 'TargetType' ve' x: Key' özniteliğine sahip iki stil kullanırken bu sorunla karşılaştım. Bunlardan birini kaldırmak (örneğin, içeriğini diğerine birleştirerek), benim için bu sorunu çözdü. – Jan