2

我在我的 WPF 应用程序中使用 MVVM 模式。我的 ViewModel 中有 ObservableCollection 记录。

public enum RecordState
{
    NotChanged,
    Changed,
    Added,
    Deleted,
    AlreadyExist
}
public class Record
{
    public string FirstId { get; set; }
    public RecordState State { get; set; }
    public string CurrentId
    {
        get { return GetIdFromInstance(Instance); }
    }
    public MyStronglyTypedClass Instance { get; set; }
}

public class MyViewModel
{
    public ObservableCollection<Record> Records;
    // other code
}

在视图中我有 DataGrid。

<DataGrid ItemsSource="{Binding }" //>

我必须在 ItemsSource="{Binding /* here */}" 中写的内容(如果可能的话),以便 Datagrid Items 更改为

Records[0].Instance
Records[1].Instance
Records[2].Instance
...
Records[Records.Count-1].Instance
4

1 回答 1

0

{Binding}意味着您的 ItemsSource 是该 DataGrid 的 DataContext (可能继承自祖先元素)。您应该做的是将您的顶级元素(Window、UserControl 等)的 DataContext 设置为您的 ViewModel 类。然后正如加里建议的那样:

<DataGrid ItemsSource="{Binding Records}">

您提供的有关动态元素的链接在这方面也是如此,它添加了更复杂的元素绑定和 DataTemplates。

于 2013-09-16T11:17:02.883 回答