我有一个WPF Datagrid,项目源是一个列表。 这是代码:
ReleaseDataGridView.ItemsSource = DisplayReleaseList;
其中DisplayReleaseList定义为:
List<ReleaseDataItem> DisplayReleaseList = new List<ReleaseDataItem>();
和ReleaseDataItem是一个具有很少字段及其各自属性的类。 我向DisplayReleaseList添加了一些ReleaseDataItem对象,然后将其设置为ReleaseDataGridView的ItemsSource
我想在ReleaseDataItem类中有一个字段/属性,它决定是否在网格中显示这一行。
例如: 如果在ReleaseDataItem类中有两个字段,例如 bool visible 和字符串名称,我将代码编写为:
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(第二个对象)对应的行。 我怎样才能做到这一点?
答案 0 :(得分:0)
在集合视图中包装源可以对您进行排序或过滤:
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; }
}