关于 c#:为什么 DataGrid 列绑定不会破坏 MVVM 结构?

Why is the DataGrid column binding not breaking MVVM structure?

我对 WPF/MVVM 没有经验,这可能不是一个有根据的问题。

在 WPF MVVM 表单的基本 MVVM 结构中,我相信我说它可以采用类似于我在此消息的页脚中包含的形式是正确的。这是纯粹为这个问题制作的纯粹演示代码,还没有真正检查过。

我不明白的是,在视图中,DataGrid 链接到"公司"可枚举/集合。这完全没问题,但是当随后将列链接到"名称"(对象类型公司(模型)的属性)时,为什么这不会破坏 MVVM 结构,视图似乎直接引用模型?

在 ViewModel 中创建一个对象集合,然后具有引用底层模型属性的属性不是更好吗?这样,模型是否应该更改它的属性名称,只需要更改 ViewModel 映射而不是 View?

也许我遗漏了执行类似操作的步骤,或者遗漏了 MVVM 理解中的一些基本知识?

感谢您的指导。

MVVM 结构演示

查看:

1
2
3
4
5
<DataGrid ItemSource={Binding Path="Companies"} AutoGenerateColumns="false">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name}" />
    </DataGrid.Columns>
</DataGrid>

型号:

1
2
3
4
5
6
public class Company{
    public string Name{get; set;}
    public Company(string name){
        this.Name = name;
    }
}

视图模型:

1
2
3
4
5
6
7
8
9
public class DataGridViewModel{
    public DataGridViewModel(){
        this.Companies = new ObservableCollection<Company>();
        this.Companies.Add(new Company(test1));
        this.Companies.Add(new Company(test2));
        this.Companies.Add(new Company(test3));
    }
    public ObservableCollection<Company> Companies{get;set;}
}

View.cs:

1
2
3
4
5
public ViewCS()
{
    InitializeComponent();
    this.DataContext = new DataGridViewModel();
}


该代码完美,100% 与 MVVM 兼容。

说视图完全不知道它显示的数据的结构是疯狂的。它必须了解相关信息。否则像 DataTemplate 这样的概念没有任何意义。

绑定到对象的特定属性完全没有问题。句号。