2011-07-22 164 views
0

我已经看到了类似的问题问WPF,但没有一个提出的解决方案似乎Windows Phone的下工作7取消选择

基本上上点击一个列表框WP7项目,我有一个列表框,其中行为需求1)当用户点击列表中的一个项目时,它被选中。 2)当用户点击任何其他项目时,第一个被选中并且被轻击的项目被选中(到目前为止,这仅仅是正常的单选列表框行为)3)当用户点击已经选择的项目时,项目“取消选择”(以至于再没有选定的项目了)。

拦截MouseLeftButtonDown事件并清除所选内容当然很容易,但是ui系统似乎会继续处理该选项卡并转向重新选择我刚刚未选中的项目。首先,我认为绑定可能是问题,并且列表项+ +绑定到一个observableCollection,但“selectedItem”或“selectedIndex”都不会绑定。

我试着设置处理道具真实事件参数:

e.Handled = true 

,但没有改变。

任何想法?

+0

是否有任何理由不使用listBox_SelectionChanged? –

+0

我是(出于其他原因),但那不是问题。我需要的是当你点击它时所选项目变为未选中状态。 SelectionChange不会告诉你。 – DarinH

回答

3

使用MouseLeftButtonUp()而不是MouseLeftButtonDown()。

private object _selected; 

    private void ListBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
    { 
     var list = (ListBox) sender; 

     if (list.SelectedItem == _selected) 
     { 
      list.SelectedIndex = -1; 
      _selected = null; 
     } 
     else 
     { 
      _selected = list.SelectedItem; 
     } 
    } 
+0

Jeez,我知道必须有一个简单的解决方案。谢谢! – DarinH