监控的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