【问题标题】:How to keep sort order in WPF Datagrid, when toggling child controls切换子控件时如何在 WPF Datagrid 中保持排序顺序
【发布时间】:2020-05-15 05:27:20
【问题描述】:

我有一个带有边框控件的窗口。

边框是不同视图/用户控件的占位符。

第一个视图是带有数据网格的用户控件。 数据网格工作正常。 我可以通过单击列标题对列进行排序。

然后,我将边框子项与另一个用户控件交换用于不同的用例。 这也很好用。

当我现在将边框子交换回第一个数据网格用户控件时, 我的排序丢失了。

假设第二列在切换之前按降序排序, 当我切换回第一列时,第一列按升序排序。

我正在缓存数据网格用户控件,这意味着,我不会破坏它并创建一个新控件。

那么在切换回排序时如何保持排序顺序?

【问题讨论】:

  • 你考虑过使用tabcontrol吗?好像是你想用的。
  • 我在另一个 UI 区域中有一个选项卡控件。这用作切换视图的触发器,因此它不包含视图。这是给定的 UI 布局。

标签: wpf sorting datagrid


【解决方案1】:

我找到了解决办法:

我将使用 StackPanel,而不是取消边框控件并交换边框子控件。 当必须“切换”视图时,我会“折叠”(WPF 可见性枚举的一个术语)旧视图并使新视图可见。

当切换回来时,反之亦然。

因此保留了父/子关系,并保留了所有排序顺序和选择状态。

【讨论】:

  • 你可以像我说的那样使用标签控件,只关闭标题,然后你只需设置索引,你就不必做所有的可见性工作。
  • 不,很遗憾没有。如前所述,选项卡控件不包含视图。它只是用作切换视图的触发器。这是由于 ui 的给定布局。 Tab 控件不在视图的正上方,我无法移动它。因此我的问题。
  • 你说边框包含控件,现在你说它没有?下次实际显示一些 xaml,因为您感到困惑。
  • 我说边界控制包含控制。这是第一个解决方案。这不起作用,因为我通过交换孩子来切换边界内的子控件。这导致没有保留排序的问题。我们拥有的选项卡控件内部从未有边框。它仅用于触发在不属于 tabcontrol 的边框控件内切换子控件。现在我介绍了一个 StackPanel INSTEAD of the Border。切换选项卡时,我现在折叠 StackPanel 内的一个视图并将另一个视图设置为可见,反之亦然。选项卡连接
  • 我从来没有说过不同的话。
猜你喜欢
  • 2010-12-15
  • 2016-04-29
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2011-08-31
相关资源
最近更新 更多