【发布时间】:2011-09-27 07:49:55
【问题描述】:
我有大约十几个不同的视图,除了它们绑定到的属性的名称外,它们几乎相同。例如,以下部分是两种不同的视图:
<TextBlock Text="{Binding PersonName}">
<GroupBox Header="{Binding PersonName}">
<ComboBox Text="{Binding SelectedPersonName}" SelectedItem="{Binding SelectedPerson}" ItemsSource="{Binding People}" DisplayMemberPath="PersonName"/>
</GroupBox>
<igDP:XamDataGrid DataSource="{Binding PersonEntries}"
<TextBlock Text="{Binding CarName}">
<GroupBox Header="{Binding CarName}">
<ComboBox Text="{Binding SelectedCarName}" SelectedItem="{Binding SelectedCar}" ItemsSource="{Binding Cars}" DisplayMemberPath="CarName"/>
</GroupBox>
<igDP:XamDataGrid DataSource="{Binding CarEntries}"
请注意,这些与块之间唯一真正的区别是所使用的绑定的名称(Person vs Car)。
我正在考虑创建一个其他视图继承自的 BaseView 类。这个基类将使用足够通用的绑定名称,以便可以重复使用,例如:
<TextBlock Text="{Binding DataItemName}">
<GroupBox Header="{Binding DataItemName}">
<ComboBox Text="{Binding SelectedDataItemName}" SelectedItem="{Binding SelectedDataItem}" ItemsSource="{Binding DataItems}" DisplayMemberPath="DataItemName"/>
</GroupBox>
<igDP:XamDataGrid DataSource="{Binding DataItemEntries}"
这样,我的 PersonsView 和 CarsView 可以从 BaseView 继承,仅此而已。不过,我还必须对 ViewModel 进行更改,以便它们公开正确命名的属性,例如 DataItem。我想我可以创建一个基本的 ViewModel 接口来公开所需的属性并让其他 ViewModel 实现它。
对以上内容有什么想法吗?像我描述的那样尝试创建基本视图或基本视图模型是不是一个坏主意?
谢谢。
【问题讨论】:
-
我之前使用过类似的设置,效果很好。我会说这是非常主观的,并且取决于项目。