C# 检查绑定到可观察集合的datagrid中的单元格值是否为空或重复
我搜索了一会儿,但我不知道如何检查我的datagrid的“Name”列是否为空或是否包含现有值。如果是,则不应将该行添加到集合中 这是一节课:C# 检查绑定到可观察集合的datagrid中的单元格值是否为空或重复,c#,wpf,datagrid,observablecollection,C#,Wpf,Datagrid,Observablecollection,我搜索了一会儿,但我不知道如何检查我的datagrid的“Name”列是否为空或是否包含现有值。如果是,则不应将该行添加到集合中 这是一节课: public class DataVals : BaseClass, INotifyPropertyChanged { #region Properties [XmlIgnore] private string _Name = ""; [XmlAttribute] public string Name {
public class DataVals : BaseClass, INotifyPropertyChanged
{
#region Properties
[XmlIgnore]
private string _Name = "";
[XmlAttribute]
public string Name
{
get { return _Name; }
set
{
_Name = value;
this.PropertyChangedNotify("BindId");
}
}
[XmlAttribute]
public float Min { get; set; } = 0;
[XmlAttribute]
public float Max { get; set; } = 0;
[XmlAttribute]
public float ALVal { get; set; } = 0;
[XmlAttribute]
public float WLVal { get; set; } = 0;
----
}
可观测集合:
public ObservableCollection<DataVals> ListeDataTable { get; set; } = new ObservableCollection<DataVals>();
下图显示了该问题,我可以添加名称为空的行:
感谢您的帮助。您可以获得一个集合视图,并使用以下代码片段对其进行筛选:
var view = CollectionViewSource.GetDefaultView( ListDataTable );
view.Filter = item =>
{
var dataVal = item as DataVals;
if( dataVal == null )
return false;
return !string.IsNullOrEmpty( dataVal.Name );
};
无论如何,绑定都使用默认视图,因此不需要执行任何其他操作:)是否要删除名称为空的行?如果已绑定集合,则值已在其中?=!或者“如果是这样,则不应将行添加到集合”的确切含义是什么。在将行添加到datagrid之前,我需要检查名称,我可以在离开窗口时过滤集合,但我需要通知用户名称为空或重复。我不知道CollectionViewSource对象,但这工作正常,我现在无法添加名称为空的行。是否有方法通知用户名称单元格为空?我还需要检查名称是否不重复。我建议创建一个回调来响应ListDataTable的更改。在那里,您可以编写类似var duplicateNames=ListDataTable.GroupBy(i=>i.Name)的代码,其中(g=>g.Count()>1)选择(g=>g.Key);查找所有重复项,并在filter函数中对其进行筛选。
var view = CollectionViewSource.GetDefaultView( ListDataTable );
view.Filter = item =>
{
var dataVal = item as DataVals;
if( dataVal == null )
return false;
return !string.IsNullOrEmpty( dataVal.Name );
};