2016-01-13 44 views
0

在我的gridcontrol中,我想爲different state設置3 backgroud colors這個單元格中的數據。例如,單元的default backgroud color is green,用戶編輯單元格時,更改backgroud color to red,保存完成後,更改背景color to yellow如何控制網格列中數據的編輯狀態?

我目前的解決方案是每個屬性也有coresponding state property。例如,一個名爲Country的屬性,還有另一個名爲CountryState的屬性。 CountryState的類型是enum type,其中包含3個值:默認,編輯和保存。然後將網格控件的單元格背景顏色綁定到狀態屬性。

I don't think this is a good solution,有沒有其他解決方案來處理這種情況?

+0

你有沒有實現的'你的類inotifypropertychanged'接口? – Moumit

+0

@Moumit是的,但它不能檢查狀態 – Allen4Tech

+0

只保留一個屬性'國家'..並在編輯任何屬性更新它 – Moumit

回答

0

僅使用一個propertystatenotify變化..

例子:

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 
} 
+0

感謝您的回覆。但是我想知道哪個屬性發生了變化,這樣我就可以知道模型已經改變了,但我不知道哪個屬性發生了變化。 – Allen4Tech

+0

爲什麼??如果你遵循'MVVM'模式而不是'在任何數據上修改'將會觸發'INotifyPropertyChanged' ..作爲一個例子..如果你修改'Book title'如上面例子中提到的那樣然後'setter'屬性自動被調用...記得使用'ObservableCollection 保留'BookViewModel'' – Moumit

+0

以下是這個http://www.wpf-tutorial.com/data-binding/responding-to-changes/上的兩個'good'示例&http://www.c-sharpcorner.com/UploadFile/e06010/observablecollection-in-wpf/ – Moumit

相關問題