Silverlight ListBox, запускающий события CheckBox при прокрутке - PullRequest
1 голос
/ 17 июня 2011

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

Это похоже на то, что обсуждается в этом посте:

Проверка флажка Silverlight 3 ошибка при прокрутке?

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

Есть ли способ остановить запуск этого события при прокрутке?

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

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

Я не думаю, что события Checked и Unchecked подходят для той цели, для которой вы их ставите. Они действительно были разработаны, чтобы влиять на визуальное состояние. Вместо этого вам следует привязать логическое свойство в указанном объекте элемента к свойству IsChecked флажка. Код в установщике в объекте item может затем запустить серверное содержимое (для поясов и фигурных скобок он может сравнить текущее значение с входящим значением).

Чтобы ответить на ваш вопрос, вы можете попытаться указать старый StackPanel в шаблоне для свойства ItemsPanel списка. Хотя это может быть не вариант, если у вас много записей.

1 голос
/ 19 сентября 2012

Панелью ItemsPanel по умолчанию для ListBox является VirtualizingStackPanel.Вы можете изменить его, чтобы использовать StackPanel, таким образом, ваша проблема решена.Используйте этот код:

<ListBox.ItemsPanel>
  <ItemsPanelTemplate>
     <StackPanel />
  </ItemsPanelTemplate>
<ListBox.ItemsPanel>
...