任何人都可以解释silverlight / wpf数据绑定实际上如何确定哪个是在集合中设置为selectedItem的正确项目,如下面的代码片段
<ComboBox SelectedItem="{Binding Mode=TwoWay, Path=Province}"
ItemsSource="{StaticResource ProvinceCollection}" />
其中,ProvinceCollection只是一个静态字符串数组。
在这个例子中,这些项是字符串,因此是足够简单的值类型,但是当集合包含比运行时加载的对象实例更复杂的东西时,它知道如何设置所选项。 (Datacontext).Province和ProvinceCollection中的项目的对象引用即使我认为它们应该是不一样的。
我要做的就是这样做,让数据绑定从集合中选择一个项目,当前datacontext的项目不在集合中(即没有项目具有相同的对象引用)
答案 0 :(得分:3)
我自己在Silverlight 2中遇到了这个令人讨厌的问题,不幸的是它正在使用Object.ReferenceEquals(在反射器中检查),所以它实际上必须是同一个对象。这令人难以置信的刺激。关于它你什么也做不了我害怕:(
这已在Silverlight 3(至少是Beta版)中修复,现在它使用Equals,因此您可以使用覆盖Equals方法的技巧。