【问题标题】:Silverlight ListBox triggering CheckBox events when scrolledSilverlight ListBox 在滚动时触发 CheckBox 事件
【发布时间】:2011-06-17 03:38:52
【问题描述】:

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

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

Silverlight 3 Checkbox Listbox bug when scrolling?

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

有什么方法可以在滚动时阻止此事件触发吗?

【问题讨论】:

    标签: silverlight checkbox listbox scroll


    【解决方案1】:

    所以我只希望在用户更改复选框状态时发生所有这些虚假的服务器通信。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        相关资源
        最近更新 更多