我有一個可綁定到列表框的地址的ObservableCollection。然後在ItemTemplate中,我使用{Binding。}綁定到當前地址記錄。這導致我的地址顯示使用我已設置格式化地址的ToString方法。一切都很好,除非我更新單個地址記錄上的屬性,UI中的列表不會更新。添加/刪除列表確實更新UI(使用ObservableCollection行爲)。如果我直接綁定到UI更新地址上的屬性(使用Address對象的INotifyPropertyChanged行爲)。數據綁定在使用{綁定}或{綁定}時未更新
我的問題是,有沒有辦法通知用戶界面對整個對象所做的更改,以便我仍然可以使用此語法,或者是否需要在我的地址類型上放置DisplayText屬性ToString方法並綁定到那個?僅供參考,這是一個MVVM架構,所以我沒有直接在ListBox上調用Refresh的奢侈。
感謝您的任何幫助/想法。
<ListBox x:Name="AddressList" ItemsSource="{Binding Addresses}" Background="Transparent" BorderBrush="Transparent"
Width="200" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding .}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
這很有道理。雖然我認爲我會堅持顯示文本屬性路由,因爲我們需要支持美國和外國地址以及第二行,如您所述。爲了在WPF方面取得成功,可能需要一個轉換器類。對我來說,讓實體類保持集中更有意義。如有必要,調用者可以將所有單個字段覆蓋它。 – Mark 2010-03-07 15:32:28