【问题标题】:How to control data's edit state in gridcolumn?如何控制gridcolumn中数据的编辑状态?
【发布时间】:2016-01-13 21:34:39
【问题描述】:

在我的gridcontrol 中,我想将3 backgroud colors 设置为单元格中数据的different state。例如,当用户编辑单元格时,单元格的default backgroud color is green,,更改backgroud color to red,保存完成后,更改背景color to yellow

我目前的解决方案是每个属性也有coresponding state property。例如,一个名为 Country 的属性,还有另一个名为 CountryState 的属性。 CountryState 的类型是enum type,它包含3 个值:默认值、已编辑值和已保存值。然后将 gridcontrol 的单元格背景颜色绑定到 state 属性。

但是I don't think this is a good solution,有没有其他解决方案来处理这种情况?

【问题讨论】:

  • 你在课堂上实现inotifypropertychanged接口了吗??
  • @Moumit 是的,但它无法检查状态
  • 只保留一个属性State .. 并在编辑any property 时更新它

标签: c# .net wpf gridcontrol


【解决方案1】:

只使用一个property 名称statenotify 变化..

示例:

public class BookViewModel : INotifyPropertyChanged
{
    string _Title;
    public string Title
    {
        get { return _Title; }
        set
        {
            CheckAndNotifyState(_Title, value, "Title");
            _Title = value;
        }
    }

    string _AuthorName;
    public string AuthorName
    {
        get { return _AuthorName; }
        set
        {
            CheckAndNotifyState(_AuthorName, value, "AuthorName");
            _AuthorName = value;
        }
    }

    State _State;
    public State State
    {
        get { return _State; }
        set
        {
            CheckAndNotifyState(_State, value, "State");
            _State = value;
        }
    }


    private void CheckAndNotifyState(object oldValue, object newValue, string propertyName)
    {
        if (oldValue != newValue)
        {
            State = State.Edit;
            NotifyPropertyChanged(propertyName);
        }
    }


    public event PropertyChangedEventHandler PropertyChanged;

    protected void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

public enum State
{
    Default,
    Edit,
    Saved
}

【讨论】:

  • 感谢您的回复。但是我想知道改了哪个属性,这样就可以知道模型改了,但是不知道改了哪个属性。
  • 为什么??如果您遵循MVVM 模式而不是On modification on any data 将触发INotifyPropertyChanged.. 作为示例.. 如果您修改Book title 如上例中所述然后the setter 属性自动被调用...记得使用ObservableCollection<BookViewModel>保留BookViewModel
  • 感谢您的提醒。但我的情况是我需要保存一个特定的编辑属性来保存数据,而不是整个对象。
  • @Allen4Tech 你能探索你的code .. 还是同样的demo code .. 我没听懂你..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多