我正在使用M-V-VM模式。 我有一个ViewModel和一个DataModel的ObservableCollection。 DataModel列表与DataGrid数据绑定。
当渲染网格时,我希望其中一个字段是一个ComboBox(比方说一个字符串名称列表)。
此字符串名称列表是适用于所有行(即DataModel)的通用列表。
有没有办法将网格的字段级行属性绑定到父ViewModel?
我想避免的一个可能的解决方案是: 在DataModel中有一个get-property,它实质上返回了ViewModel的属性(字符串名称列表)。
答案 0 :(得分:0)
您可以使用静态资源执行此操作。 例如。在xaml中定义你的静态资源
<UserControl.Resources>
<mynamespace:MyViewModel x:Key="MyViewModel" />
</UserControl.Resources>
现在您可以在用户控件中引用此资源:
<Controls::DataGrid DataContext="{StaticResource MyViewModel}" ItemSource="{Binding MyItems}" ...
<Controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding MyItems, Source={StaticResource MyViewModel}" DisplayMemberPath="MyString" /> <!-- This does the job with the combo box and the strings -->
</DataTemplate>
</Controls:DataGridTemplateColumn.CellTemplate>
</Controls:DataGrid>
希望这有帮助,
BR,
TJ