我正在编写一个可与我的WPF自定义控件一起使用的ViewModel库。 我的问题是我的DomainModel有大量的数据类型: 镉,笔,小配件,书籍,ECC。 所有这些数据类型都使用枚举枚举(我有或多或少有100个数据类型),每个数据类型对应一个数据库表。
因此,我们的想法是拥有一个ViewModel库,它为每种数据类型公开一个属性,因此我的UI控件可以直接绑定我的viewModel的属性。每个属性的viewModel返回一个ObservableCollection。 例如,如果我想让我的组合框填充“小工具”数据,在我的XAML中我会有类似的东西:
<my:XCombo ItemsSource="{Binding Gadgets}" .... />
在我的ViewModel中我会:
public ObservableCollection<Gadgets> Gadgets
{
get
{
//get gadgets data from my domain model
return _model.GetData(DataEnum.Gadgets);
}
}
现在,为了做到这一点,我需要在我的ViewModel中为每个枚举值一个属性,但我想避免放置100个属性访问器。我很懒,这可能非常容易出错。 我知道,在c#4中我们有动态属性,所以这样我就可以避免编写100个属性访问器,但是我必须使用没有动态属性的.net 3.5,我不能使用.net 4;(
是否有人已经遇到过此问题或任何建议?
提前多多感谢。
答案 0 :(得分:2)
您可以尝试使用返回相应数据的索引器属性
public IList this[DataEnum type]
{
return _model.GetData(type);
}
然后使用它绑定它:
ItemsSource="{Binding [Gadgets]}"