Мониторинг изменений выбора ListView с помощью привязки - PullRequest
0 голосов
/ 01 февраля 2012

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

Когда режим выбора ListView установлен в «Одиночный», я могу просто привязать «SelectedItem» к свойству в моем представлении и наблюдать, когда событие этого свойства изменяется. Однако, если выбран режим «Несколько», поведение будет полностью ненадежным. Иногда последний нажатый элемент изменяет SelectedItem, а иногда нет. Это свойство DependencyProperty, по-видимому, является полным мусором, когда режим выбора не является единичным. Как еще можно использовать привязку для отслеживания изменений в коллекции SeViewItems ListView?

Обратите внимание, что я не использую Expression Blend, поэтому я не буду использовать Interaction.Triggers или аналогичные библиотечные решения.

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

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Единственное решение состояло в том, чтобы обернуть шаблон ItemsTemplate для списка в элемент управления, который можно переключать и имеет привязку команды (например, кнопки), а затем привязать модель представления к этой привязке команды. Это огромная боль и требует взлома с помощью HitTestVisibility и привязки состояния кнопки к выбранному состоянию элемента, но в итоге это работает.

0 голосов
/ 01 февраля 2012

Не вижу другого пути, чем описано в этой хорошей статье.

Дело в том, что свойство SelectedItems, к сожалению, доступно только для чтения, поэтому не может быть привязано к данным.

До сих пор это, к сожалению, довольно сложная история.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...