WPF MVVM-将DataGrid绑定到模型的ObservableCollection



我对WPF MVVM还很陌生,如果我错误地理解了MVVM的概念,请原谅我。

我的视图中有一个DataGrid,我已将ItemsSource绑定到ViewModel中的ObservableCollection<M>M类是Model类。但是,M类具有bool属性,这些属性将在DataGrid中显示为"Yes/No"字符串。

目前,我正在使用Converter将bool值转换为string。但是,ViewModel将模型的列表(ObservableCollection)公开给View感觉是错误的。我还读到,在MVVM中,转换应该在ViewModel中完成。那么,实现这一点的正确方法是什么——DataGrid的MVVM方法?

理想的世界中,您可以将Model对象包装在它们自己的ViewModel中,这样您的ObservableCollection包含一个ViewModel类型,这些bool Model属性转换为"是/否"string属性。

但是,在实用的世界中,如果您不编辑这些值,我只需要注意,如果您公开了许多bool属性并有数千行,那么当DataGrid实例化每个属性和行的Converter时,渲染网格的性能会受到影响。

使用转换器并不是一种错误的方式。根据我的建议,您应该像现在这样绑定数据,在视图中,您可以创建并使用BoolToStringConverter将布尔值转换为yes或no。

最新更新