1

我有一个用户控件,里面有一个数据网格,我在几个不同的页面中重复使用它,并且正在使用 MV-VM。

我如何/是否可以将数据网格的 SelectedItem 依赖属性公开为包含它的用户控件上的依赖属性???

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

4

1 回答 1

1

如果您的目标只是让您的视图模型了解所选项目,您可以使用 ItemContainerStyle 属性。下面的示例会将行的 IsSelected 属性绑定到该行正在显示的项目的 IsSelected 属性。因此,您的视图模型可以为绑定集合中的每个项目具有一个 is selected 属性,并且它们可以告诉父视图模型谁被选中等。这仅在您有 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>

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

于 2009-11-24T00:18:36.623 回答