【问题标题】:Exposing DataGrid SelectedItem in parent UserControl in WPF在 WPF 中的父 UserControl 中公开 DataGrid SelectedItem
【发布时间】:2010-12-19 16:18:01
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2011-12-11
      • 2012-06-12
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多