Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查绑定到可观察集合的datagrid中的单元格值是否为空或重复_C#_Wpf_Datagrid_Observablecollection - Fatal编程技术网

C# 检查绑定到可观察集合的datagrid中的单元格值是否为空或重复

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 {

我搜索了一会儿,但我不知道如何检查我的datagrid的“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 );
        };