单击时取消选择WP7列表框项

时间:2011-07-22 19:51:59

标签: windows-phone-7 listbox selection

我见过有关WPF的类似问题,但是所提出的解决方案似乎都不适用于Windows Phone 7.

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

拦截MouseLeftButtonDown事件并清除选择当然很容易,但是ui系统似乎继续处理选项卡并转过来重新选择我刚刚取消选择的项目。

首先,我认为绑定可能是问题,列表项+ +绑定到observableCollection,但“selectedItem”或“selectedIndex”都没有绑定。

我尝试将事件args处理prop设置为true:

e.Handled = true

但没有变化。

有什么想法吗?

1 个答案:

答案 0 :(得分: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;
        }
    }