【问题标题】:WPF : The toggle button in my GridViewToggleRowDetailsColumn get visible when scrolling horizontallyWPF:水平滚动时,我的 GridViewToggleRowDetailsColumn 中的切换按钮可见
【发布时间】:2023-02-09 20:55:09
【问题描述】:

我有一个带有 GridViewToggleRowDetailsColumn 的 radgridview,我可以通过每一行的 RowLoaded 事件按照我想要的方式设置 GridViewToggleButton 的可见性。它工作正常,直到我需要水平滚动。当 GridViewToggleRowDetailsColumn 离开屏幕并且我滚动回到它时,GridViewToggleButton 现在全部可见。

我试图找到由此触发的任何事件,但没有成功。即使是附加到 GridViewToggleButton 的 IsVisibleChanged 事件似乎也只在可见事件上触发。

有没有人遇到同样的问题或知道什么会产生这种行为?

编辑:找到答案。这是一个虚拟化问题。在 gridview 属性中添加 EnableColumnVirtualization="False" 解决了它。

【问题讨论】:

  • 我建议你在 telerik 论坛上提问。他们的支持很好。

标签: wpf telerik togglebutton radgridview


【解决方案1】:

https://docs.telerik.com/devtools/wpf/controls/radgridview/features/ui-virtualization

经过几分钟的研究,似乎 telerik WPF GridView 使用虚拟化来提高性能。这意味着屏幕中的内容的状态将被保留,并且当内容离开您的查看区域时,它们将被销毁。这会显着释放内存空间,但是在您遇到时可能会产生一些副作用。

您可以设置EnableColumnVirtualization=false,但 Telerik 提供了一篇帮助文章,该文章可能会更直接地回答您的问题,同时不会牺牲虚拟化提供的性能。下面有一个链接,按照这些步骤进行操作,看起来相当简单。

https://docs.telerik.com/devtools/wpf/controls/radgridview/style-selectors/cell-style-selector

【讨论】:

    【解决方案2】:

    自定义此行为而不关闭虚拟化的推荐方法是使用自定义列。尝试从 GridViewToggleRowDetailsColumn 继承并覆盖 CreateCellElement。它是在单元格中创建视觉元素的回调,或多或少与RowLoaded同时调用。然后为那些您不想为其设置按钮的行返回 null

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 1970-01-01
      • 2021-01-05
      • 2011-12-15
      • 1970-01-01
      • 2014-04-27
      • 2012-04-17
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多