为什么 DataGrid 列绑定没有破坏 MVVM 结构?

Why is the DataGrid column binding not breaking MVVM structure?

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

在 WPF MVVM 窗体的基本 MVVM 结构中,我相信我说它可以采用类似于我在该消息的页脚中包含的窗体的说法是正确的。 这纯粹是为了这个问题而做的演示代码,还没有真正检查过。

我不明白的是,在视图中,DataGrid 链接到 'Companies' Enumerable/Collection。这完全没问题,但是当该列随后链接到 'Name'(对象类型 Company(模型)的 A 属性)时,为什么这没有破坏 MVVM 结构,视图看似直接引用模型?

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

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

感谢您的指导。

MVVM结构演示

查看:

<DataGrid ItemSource={Binding Path="Companies"} AutoGenerateColumns="false">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name}" />
    </DataGrid.Columns>
</DataGrid>

型号:

public class Company{
    public string Name{get; set;}
    public Company(string name){
        this.Name = name;
    }
}

ViewModel:

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:

public ViewCS()
{
    InitializeComponent();
    this.DataContext = new DataGridViewModel();
}

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

说视图完全不知道它正在显示的数据的结构是疯狂的。它 了解这方面的知识。否则像 DataTemplate 这样的概念没有任何意义。

绑定到对象的特定属性完全没有问题。期间.