在WPF中的父UserControl中公开DataGrid SelectedItem

时间:2009-11-23 22:26:24

标签: wpf data-binding user-controls dependency-properties selecteditem

我有一个带有数据网格的用户控件,我可以在几个不同的页面中重复使用,并使用M-V-VM。

我怎样才能将数据网格的SelectedItem依赖属性公开为包含它的用户控件的依赖属性?

目标是在使用控件的页面中,我可以将Grid的SelectedItem绑定到Page的视图模型上的属性。我并不真正关心从视图模型中更改SelectedItem,主要是让它具有当前值来完成一些工作。

1 个答案:

答案 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>

如果只有你的视图模型需要了解所选项目,你可以通过这种方式解决对另一个依赖项属性的需求。