1

我有一个DataGrid绑定到ObservableCollection, 并使用 MVVM 结构实现的。我的问题是如何DataGrid在 C# 中像这样实现编辑单个单元格?

数据模型:

这是ObservableCollection绑定到的执行DataGrid

private ObservableCollection<IoData> _ioCollection;

public Data_Model()
{
    IOCollection = new ObservableCollection<IoData>();
    IOCollection.Add(new IoData() { rowNum = 0, input = _input0, output = _output0});
    IOCollection.Add(new IoData() { rowNum = 1, input = _input1, output = _output1});
    IOCollection.Add(new IoData() { rowNum = 2, input = _input2, output = _output2});
}

//**Update 1: showing my Collection's property**

public ObservableCollection<IoData> IOCollection
{
    get { return _ioCollection; }
    set
    {
        _ioCollection = value;
        NotifyPropertyChange(() => IOCollection);
    }
}

xml:

<DataGrid ItemsSource="{Binding Data_Model.IOCollection}" ... />

我将从Command我的 ViewModel 中执行此操作。我是否只需替换包含单元格的行并添加正在更改的数据?我真的只是不确定如何DataGrid使用由ObservableCollection.

谢谢您的帮助。

4

2 回答 2

3

只需编辑 ObservableCollection 中的项目,它就会cell相应地更新。

您的类IoData需要实现INotifyPropertyChanged,因此当进行更改时,您的属性将在 UI(View) 上更新。

于 2013-11-14T19:38:32.817 回答
1

假设您的数据对象(在您的示例中为 IoData)正确实现了 INotifyPropertyChanged,您只需要引用感兴趣的数据对象并更新属性。更改将自动传播到您的 DataGrid。

http://msdn.microsoft.com/en-us/library/ms668604(v=vs.110).aspx

编辑:要编辑数据,您可以将其作为 data[1].input 访问。您使用的索引可以很容易地附加到 DataGrid 的 SelectedIndex 属性或类似的东西上。如果其他东西持有对同一 IOData 对象的引用(如果它是在“Add”语句以外的地方构造的),对该引用的任何更改也会更新 DataGrid。

于 2013-11-14T19:39:42.163 回答