gpt4 book ai didi

c# - List C# 中的 WPF datagrid 过滤器数据绑定(bind) List

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:16 25 4
gpt4 key购买 nike

我有一个 DataGrid绑定(bind)到 List<T> .下面是我的课。 List<FSCLevel>绑定(bind)到 RowDetails在我的主要DataGrid .我添加了一个过滤器控件,供用户通过 CUSTOMER_CODE 进行过滤.

public class CUSTCARDLevel: INotifyPropertyChanged
{
#region Members
private string _cUSTOMER_CODE;
private List<FSCLevel> _fSClist;
#endregion

#region Properties
public string CUSTOMER_CODE { get { return _cUSTOMER_CODE; } set { _cUSTOMER_CODE = value; OnPropertyChanged("CUSTOMER_CODE"); } }
public List<FSCLevel> FSCLIST { get { return _fSClist; } set {_fSClist = value; OnPropertyChanged("FSCLIST"); } }
#endregion

// INotifyPropertyChanged interface
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{ PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

}

我现在需要在列表上应用一些过滤器,例如在 DataGrid它只显示 CUSTOMER_CODE是“CUST1”。

问题来了,我必须使用 ObservableCollection 吗?为了过滤目的?有没有一种方法可以让我将类(class)与 INotifyPropertyChanged 一起使用?界面?如果是这样,处理 List<T1> 的最佳方法是什么?在 List<T> 内?假设我将列表放入 ObservableCollection<T>使用:

ObservableCollection<CUSTCARDLevel> myObserveList = new ObservableCollection<CUSTCARDLevel>(myList);

List<FSCLevel> 会发生什么?里面?或者我该如何转换 List<FSCLevel>在 CUSTCARDLevel 里面进入 ObservableCollection?或者我需要做些什么来修复我的类(class)?

最佳答案

我想把它作为评论,但超出了字符数限制。我马上去做。

嗯,这都是关于时间的需要。

I would strongly recommend against the frequent casting using new ObservableCollection<object>(myList) since it'll each time return a new instance that'll take up memory.

现在假设您有一个 List<T>以及 List<T> 项目的任何变化如果您想反射(reflect) UI,那么您应该只使用 ObservableCollection对于 List<T>而不是任何 ListClass T 的一部分.

相反,如果您有一个需要在每次 collection 时更新的 UI在class T已修改,我建议您将其设为 ObservableCollection .

通常以最常见的方式,开发人员使用ExtensionMethods转换 List<T>ObservableCollection<T>了解更多信息 here

此外,他们使用 XAML Converters并将元素直接绑定(bind)到列表。

My final recommendation: Use an observable collection based on your needs as explained above but most importantly, don't operate on Lists unless it's actually necessary. Fetch the data from your service into a List convert it once into an ObservableCollection and then use System.LINQ to filter the data from it.

关于c# - List<T> C# 中的 WPF datagrid 过滤器数据绑定(bind) List<T1>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49698012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com