2009-12-29 107 views
1

这里是的DataTemplates:WPF DataTemplate中绑定BUG:AmbiguousMatchException

<DataTemplate DataType="{x:Type data:Item}" x:Key="ItemTemplate"> 
    <Border/> 
</DataTemplate> 

<DataTemplate DataType="{x:Type data:StyleItem}" x:Key="StyleItemTemplate"> 
    <Border> 
     <ContentControl Content="{Binding Item}" 
       ContentTemplate="{StaticResource ItemTemplate}"/> 
    </Border> 
</DataTemplate> 

我想一个List<StyleItem>绑定到一个ItemsControl,
设置ItemTemplate="{StaticResource StyleItemTemplate}",但后来我得到一个System.Reflection.AmbiguousMatchException

我读this后,并且StyleItem和Item类不是泛型类,我不知道如何在我的情况下使用parenthsis解决方案。

ItemStyleItem类生成的EF实体从System.Data.Objects.DataClasses.EntityObject继承,并实现System.ComponentModel.IDataErrorInfo

回答

3

这听起来像是你的StyleItem.Item属性和IDataErrorInfo中定义的属性索引器之间的碰撞。尝试将您的StyleItem.Item属性的名称更改为其他名称。

+1

你是efin权利!!!你是个好人,我在这个问题上挣扎不已! אתההמלך! – Shimmy 2009-12-29 21:23:44

+0

谁会想到:)בבקשה! – 2009-12-29 21:27:17

0

您应该使用x:Key属性或DataType属性。

你不能同时使用两者。所以删除任何一个让它工作!我建议删除DataType属性,因为你已经在你的例子中使用了键!

+0

那么我删除了DataType属性,仍然不起作用。 关于删除密钥,如果它没有密钥,我该如何引用它? 你测试过这个,它适合你吗?对于我来说它并不是:'( – Shimmy 2009-12-29 20:16:33

+0

)你不需要引用DataType当你有一个列表或一个ContentControl(比如Button)时,WPF将检查是否有任何为当前DataContext定义的DataTemplates并使用那个 – Arcturus 2009-12-30 08:18:34