2009-06-21 31 views
2

誰能解釋的Silverlight/WPF的數據綁定實際上如何確定這是一個集合中設置爲將selectedItem如下面的代碼片段Silverlight的數據綁定的選擇?

<ComboBox SelectedItem="{Binding Mode=TwoWay, Path=Province}" 
      ItemsSource="{StaticResource ProvinceCollection}" /> 

哪裏ProvinceCollection僅僅是字符串的靜態數組右邊的項目。

在這個例子中的項目是字符串,因此值類型的都是很簡單,但什麼,它是如何知道什麼時候該集合包含一些複雜的東西在運行時加載的對象實例如何設置選定的項目。在(DataContext的).Province和對象引用的ProvinceCollection的項目都不會是相同的,即使我認爲他們應該。

即時通訊特林做只是這一點,得到的數據綁定從集合中選擇一個項目在當前的datacontext的項目在集合中(即不存在具有相同對象的引用沒有項目)

回答

3

我VE打這個討厭的一個自己,在Silverlight 2遺憾的是它使用Object.ReferenceEquals(在反射鏡檢查),因此它實際上必須是同一個對象。這是令人難以置信的刺激。沒有什麼可以做的關於它我很害怕:(

這已在Silverlight 3中修復(至少在Beta中),它現在使用Equals,因此您可以使用重寫Equals方法的技巧。