【问题标题】:Hide rows selectively in a WPF Data Grid在 WPF 数据网格中选择性地隐藏行
【发布时间】:2017-05-15 12:32:22
【问题描述】:

我有一个 WPF Datagrid,它的项目源是一个列表。 代码如下:

ReleaseDataGridView.ItemsSource = DisplayReleaseList;

其中 DisplayReleaseList 定义为:

List<ReleaseDataItem> DisplayReleaseList = new List<ReleaseDataItem>();

ReleaseDataItem 是一个具有少量字段及其相应属性的类。 我向 DisplayReleaseList 添加了一些 ReleaseDataItem 对象,然后将其设置为 ReleaseDataGridView 的 ItemsSource

我想在 ReleaseDataItem 类中有一个字段/属性来决定是否在网格中显示这一行。

例如: 如果有两个字段,在 ReleaseDataItem 类中说 bool visiblestring name,我将代码编写为:

ReleaseDataItem obj1 = new ReleaseDataItem(false,"abc"); //passed to constructor
ReleaseDataItem obj2 = new ReleaseDataItem(true,"xyz");
DisplayReleaseList.Add(obj1);
DisplayReleaseList.Add(obj2);
ReleaseDataGridView.ItemsSource = DisplayReleaseList;

那么网格将只有对应于 obj2(第二个对象)的行。 我怎样才能做到这一点?

【问题讨论】:

标签: c# wpf datagrid


【解决方案1】:

将源代码包装在集合视图中使您能够进行排序或过滤:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        ReleaseDataItem obj1 = new ReleaseDataItem(false, "abc"); //passed to constructor
        ReleaseDataItem obj2 = new ReleaseDataItem(true, "xyz");
        DisplayReleaseList.Add(obj1);
        DisplayReleaseList.Add(obj2);
        ListCollectionView itemsSource = (ListCollectionView)CollectionViewSource.GetDefaultView(DisplayReleaseList);
        itemsSource.Filter = x => ((ReleaseDataItem)x).Visible;
        ReleaseDataGridView.ItemsSource = itemsSource;
    }

    public List<ReleaseDataItem> DisplayReleaseList { get; private set; } = new List<ReleaseDataItem>();
}

public class ReleaseDataItem
{
    public ReleaseDataItem(bool visible, string value)
    {
        Visible = visible;
        Value = value;
    }

    public string Value { get; private set; }
    public bool Visible { get; private set; }
}

【讨论】:

  • 用实时过滤器检查,但不起作用。 CanChangeLiveFiltering 为 true,但将 Visible 设置为 false 时,视图仍显示该行。
猜你喜欢
  • 2016-01-23
  • 2011-01-30
  • 2023-01-17
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2013-10-19
  • 2011-11-20
相关资源
最近更新 更多