【问题标题】:Best practices for persisting ListView columns layout in WPF在 WPF 中持久化 ListView 列布局的最佳实践
【发布时间】:2010-10-13 16:39:51
【问题描述】:

目标是让用户隐藏/显示/移动/调整列大小,保存此布局,并能够在应用重新启动时恢复它。 我先告诉你我是怎么做的。在 GridView.Columns 上,我附加到 CollectionChanged 以及每个 Column.With 依赖属性。当任何事件被触发时,我将列的顺序、可见性和宽度保存到一个专有字符串中,然后将其保存到一个 XML 设置文件中。 但在我看来,这是一项相当多的手工工作 - 是否有流行的现有组件或实践来保存 Columns 布局?

【问题讨论】:

  • 是的,我知道这是一篇旧帖子。但是请参阅这篇(也是旧的)文章了解 a 解决方案。 wpfsharp.com/2012/04/10/saving-the-gridview-column-order-in-wpf 基本上,为您要保存的信息声明辅助类,将它们标记为可序列化,使用 XmlSerializer 将它们打入和打出一个方便的文件。

标签: wpf listview layout


【解决方案1】:

您可以将这些列保存在 XAML 中吗?经过快速测试,它似乎保存了相关信息。我从这个开始:

<GridView>
    <GridView.Columns>
        <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}"/>
        <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
        <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}"/>
    </GridView.Columns>
</GridView>

在调整大小和移动了一些之后,我在GridView.Columns 上拨打了XamlWriter.Save 并得到了这个:

<GridViewColumnCollection xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <GridViewColumn Width="108.51" DisplayMemberBinding="{Binding Path=FirstName}">First Name</GridViewColumn>
    <GridViewColumn DisplayMemberBinding="{Binding Path=Age}">Age</GridViewColumn>
    <GridViewColumn Width="83.8533333333333" DisplayMemberBinding="{Binding Path=LastName}">Last Name</GridViewColumn>
</GridViewColumnCollection>

【讨论】:

  • 这是一个很好的答案 - 我唯一的保留是,在尝试恢复时,它会覆盖您的绑定和标题。
  • 你是对的。如果您只想存储一些关键属性,我认为您现有的字符串方法很好。将列保存为 XAML 是一种核心选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多