Отмена выбора элемента списка WP7 при нажатии - PullRequest
0 голосов
/ 22 июля 2011

Я видел похожие вопросы о WPF, но ни одно из предложенных решений не работает под Windows Phone 7.

По сути, у меня есть список, где поведение должно быть 1), когдапользователь нажимает на элемент в списке, он выбран.2) когда пользователь касается любого другого элемента, первый элемент не выбирается, и выбранный элемент выбирается (пока это просто обычное поведение списка с единым списком выбора) 3) когда пользователь касается уже выбранного элемента, элемент «отменяет выбор» (чтобывыделенного элемента больше нет).

Конечно, достаточно легко перехватить событие MouseLeftButtonDown и отменить выбор, но система пользовательского интерфейса продолжает обрабатывать вкладку и поворачивает вокруг, чтобы повторно выбрать элемент, который я выбрал.просто невыбран.

Сначала я думал, что может быть проблема с привязкой, и элементы списка + связаны с observableCollection, но ни «selectedItem», ни «selectedIndex» не связаны вообще.

Я попытался установить значение true для аргументов обработанных аргументов:

e.Handled = true

, но без изменений.

Есть идеи?

1 Ответ

3 голосов
/ 23 июля 2011

Используйте 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;
        }
    }
...