使用绑定监视ListView选择更改

时间:2012-01-31 20:01:06

标签: c# wpf xaml binding

我有一个项目的ListView,我希望每次用户选择或取消选择一个项目而不使用控件的代码隐藏中的事件处理程序时运行一些代码 - 一切都在视图中完成,控件的datacontext设置为

当ListView的选择模式为“Single”时,我可以简单地将“SelectedItem”绑定到我视图中的属性,并监视该属性的更改事件。如果选择模式为“多个”,则行为完全不可靠。有时单击最后一项会更改SelectedItem,有时则不会。当选择模式不是单一时,此DependencyProperty似乎是完全垃圾。我怎样才能使用绑定来跟踪对ListView的SelectedItems集合的更改?

请注意,我不使用Expression blend,因此我不会使用Interaction.Triggers或类似的库解决方案。

<ListView ItemsSource="{Binding Path=Zones}"  
          SelectionMode="Multiple"
          SelectedItem="{Binding SelectedZone}">

2 个答案:

答案 0 :(得分:0)

this好文章中没有看到任何其他方式。

问题是,不幸的是,SelectedItems属性是只读的,因此无法进行数据绑定。

到目前为止,不幸的是,这是一个棘手的故事。

答案 1 :(得分:0)

唯一的解决方案是将ItemsTemplate包装在一个控件中,该控件可以切换并具有命令绑定(如按钮),然后将viewmodel绑定到该命令绑定。这是一个巨大的痛苦,需要使用HitTestVisibility进行黑客攻击并将按钮的状态绑定到项目的选定状态,但它最终会起作用。