我有一个带有数据网格的用户控件,我可以在几个不同的页面中重复使用,并使用M-V-VM。
我怎样才能将数据网格的SelectedItem依赖属性公开为包含它的用户控件的依赖属性?
目标是在使用控件的页面中,我可以将Grid的SelectedItem绑定到Page的视图模型上的属性。我并不真正关心从视图模型中更改SelectedItem,主要是让它具有当前值来完成一些工作。
答案 0 :(得分:1)
如果您的目标只是让您的视图模型知道所选项目,您可以使用ItemContainerStyle属性。下面的例子会将行的IsSelected属性绑定到行显示的项目上的IsSelected属性。因此,您的视图模型可以为绑定集合中的每个项目选择一个属性,并且它们可以告诉父视图模型被选中等等。这仅在您具有SelectionUnit =“FullRow”时才有效,否则您的选择单位是单元格。在这种情况下,您在单元格上放置一个样式以供选择。
<dg:DataGrid
ItemsSource="{Binding Path=YourItems}"
SelectionUnit="FullRow">
<dg:DataGrid.ItemContainerStyle>
<Style
TargetType="{x:Type dg:DataGridRow}">
<Setter
Property="IsSelected"
Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</dg:DataGrid.ItemContainerStyle>
如果只有你的视图模型需要了解所选项目,你可以通过这种方式解决对另一个依赖项属性的需求。