2

我有一个DataGrid,并且需要检测用户何时对一行进行了更改。我不想使用CellEditEnding,因为每当一行获得焦点并在没有任何输入的情况下丢失它时,这个事件就会引发,以另一种方式我需要将 bool 属性绑定到在该行获得 chgangd 时设置为 true 的每一行。

4

2 回答 2

1

以下面的代码为例,这样您就知道如何跟踪您的项目ItemSource是否已更改(此处仅与初始值进行比较)的基本思想。

List<myItem> Items=new List<myItem>(); //your ItemSource



    class myItem:ObservableObject //an class implement INotifyPropertyChanged interface
    {
        string _inititemName;
        string _itemName;
        bool itemChanged; //here is your indicator

        myItem(string name)
        {
            _inititemName=itemName=name;
        }

        public string itemName
        {   
            get{return _itemName;}
            set
            {  
                _itemName=vlaue; 
                if (_itemName!=_inititemName) 
                   itemChanged=true; 
                else 
                   itemChanged=false;
                RaisePropertyChanged("itemName"); //or whatever the name of the method is that invoke OnPropertyChanged
            }
        }
    } 
于 2012-10-16T09:50:26.573 回答
0

使您的项目类的属性在修改时设置一个布尔更新标志

例如

public class MyGridItem
{
    public MyGridItem(string Name)
    { 
        this.Name = Name;
        Updated = false;
    }

    public bool Updated {get; private set;}

    private string _Name = null;
    public string Name
    {
        get { return _Name; }
        set { 
                if (!_Name.Equals( value ))
                {
                    _Name = value;
                    Updated = true
                 }
            }
    }
}
于 2012-10-16T09:49:45.333 回答