Silverlight ListBox在滚动时触发CheckBox事件

时间:2011-06-17 03:38:53

标签: silverlight checkbox listbox scroll

我有一个列表框,其中的项目是复选框。滚动列表框时,我发现Checked和Unchecked事件正在为项目触发,因为它们滚动到视图或滚出视图。

这似乎与本文讨论的内容有关:

Silverlight 3 Checkbox Listbox bug when scrolling?

我遇到的问题是事件被触发,因为我发生这种情况时我正在更新服务器上的数据。当我只希望在用户更改复选框的状态时发生这种情况时,我得到了所有这些虚假的服务器通信。

滚动时是否有某种方法可以阻止此事件触发?

2 个答案:

答案 0 :(得分:2)

  

当我只想在用户更改复选框的状态时发生这种情况时,我得到所有这些虚假的服务器通信。

我认为CheckedUnchecked事件不适合您的目的。它们的设计确实会影响视觉状态。相反,您应该将列出的项目对象上的布尔属性绑定到Checkbox的IsChecked属性。然后,项目对象中的setter中的代码可以启动服务器内容(对于皮带和大括号,它可以将当前值与传入值进行比较)。

要回答您的问题,您可以尝试在模板中为列表框的StackPanel属性指定普通的旧ItemsPanel。虽然如果你有很多条目,这可能不是一个选择。

答案 1 :(得分:1)

ListBox的默认ItemsPanel是VirtualizingStackPanel。您可以将其更改为使用StackPanel,这样您的问题就解决了。 使用此代码:

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