【发布时间】:2015-05-12 06:30:38
【问题描述】:
让我们考虑以下三个类:
public class Animal
{
public string name { set; get; }
public string genome { set; get; }
}
public class Car
{
public string name { set; get; }
public int model { set; get; }
public int horsePower { set; get; }
}
public class Tree
{
public string name { set; get; }
public int age { set; get; }
}
每种类型的集合如下:
ObservableCollection<Animal> animals { set; get; }
ObservableCollection<Car> cars { set; get; }
ObservableCollection<Tree> trees { set; get; }
我们有一个ComboBox,它的项目是animals、cars 和trees。根据用户的选择,这些集合中的每一个都将显示在DataGrid 中。但是,由于数据类型不同,因此无法预先定义适当的列绑定,并且必须针对ComboBox 选择更改绑定。您对如何解决这种情况有什么建议吗?
假设:
- 我们处于 MVVM 模式。
- 我们不希望每种类型都有一个
DataGrid(总计最多 3 个DataGrids)。 - 我们不允许修改模型。
【问题讨论】:
-
亲爱的@Hamed,正如您从后面代码中的任何绑定示例中看到的那样,您需要为 UI 元素指向
DependencyProperty,并且根据 MVVM 方法,我们将模型和视图分开,如您所知。所以你的问题的标题是"Manipulating DataGrid binding in ViewModel"不是一个好主意。但我曾试图给你一个关于你的动态目标的想法。
标签: c# wpf mvvm binding datagrid