【问题标题】:Unselecting a WP7 listbox item on click单击时取消选择 WP7 列表框项目
【发布时间】:2011-07-22 19:51:59
【问题描述】:

我看到过有关 WPF 的类似问题,但建议的解决方案似乎都不适用于 Windows Phone 7。

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

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

起初,我认为绑定可能是问题,并且列表项+被绑定到 observableCollection,但“selectedItem”或“selectedIndex”根本没有绑定。

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

e.Handled = true

但没有变化。

有什么想法吗?

【问题讨论】:

  • 您有什么理由不使用 listBox_SelectionChanged?
  • 我是(出于其他原因),但这不是问题所在。我需要的是当您单击选定的项目时,它会被取消选中。 SelectionChange 不会告诉你这些。

标签: windows-phone-7 listbox selection


【解决方案1】:

使用 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;
        }
    }

【讨论】:

  • 天啊,我知道必须有一个简单的解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 2011-02-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多