監控的ListView選擇更改我有一個項目的ListView,我想每一個用戶選擇或不訴諸事件處理程序在控件的代碼隱藏取消選擇項目時運行一些代碼 - 一切都在視圖正在做該控件將其datacontext設置爲。使用綁定
當ListView控件的選擇模式是「單次」我可以簡單地「的SelectedItem」綁定到財產在我看來,並觀察當屬性的更改事件。但是,如果選擇模式是「多個」,則行爲完全不可靠。有時點擊的最後一個項目會改變SelectedItem,有時它不會。當選擇模式不單一時,此DependencyProperty似乎是完全垃圾。我還可以如何使用綁定來跟蹤對ListView的SelectedItems集合的更改?
注意,所以我不會使用Interaction.Triggers或類似的庫解決方案我不使用Expression Blend中。
<ListView ItemsSource="{Binding Path=Zones}"
SelectionMode="Multiple"
SelectedItem="{Binding SelectedZone}">
真的不明白這句話:「沒有訴諸控件的代碼隱藏事件處理程序」。那麼如果你不想在代碼隱藏的東西上繼承,你想如何創建一個'DataBinding'? – Tigran 2012-01-31 20:06:53
@Tigran在WPF中,xaml文件(UI)具有代碼隱藏功能,可以爲其控件(如ListView.SelectionChanged事件)包含程序邏輯和事件處理程序。有一種稱爲MVVM模式的方法,它涉及使用datacontext和綁定,以便控件可以直接綁定到對象模型,而不是使用以編程方式操作屬性的中間方法。因爲我的控件以這種方式綁定到它的底層數據,所以在視圖和代碼隱藏控件之間分割在底層數據上完成的工作是一個巨大的痛苦(並且不雅)。 – Alain 2012-01-31 20:19:15
嘗試在ListView上關閉virtualiztion。您是否看到當您單擊與當前選定項目位於同一屏幕上的項目時,如果您不得不向下滾動至該項目,則會得到不同的結果。這聽起來很奇怪,但我想嘗試的是使ListView單一,但使項目本身可切換(只是一個布爾屬性手動選擇)和基於isManuallySelected的XAML中的自定義演示文稿,因此它看起來和感覺像一個多選。 – Paparazzi 2012-01-31 22:59:40