WPF DataGrid获取所有SelectedRows

时间:2012-06-01 16:20:46

标签: .net wpf datagrid rows selected

对于我的这个项目,必须使用免费的WPF DataGrid(我认为Infragistics库是坏的,我在此之后收回它)。

看起来DataGrid没有干净的MVVM友好方式获取selectedRows列表?

我可以将数据绑定到SelectedItem="{Binding SelectedSourceFile}",但这只显示第一个选定的行。需要能够获得所有选定的行。

通过MVVM干净地做任何提示?

2 个答案:

答案 0 :(得分:1)

您可以使用我为此类情况创建的变通方法,允许您为只读依赖项属性执行OneWayToSource绑定。我称之为PushBinding

我在这里发了一篇关于它的博文:OneWayToSource Binding for ReadOnly Dependency Property

要绑定SelectedItems,您可以执行此操作

<DataGrid ItemsSource="{Binding ...}">
    <pb:PushBindingManager.PushBindings>
        <pb:PushBinding TargetProperty="SelectedItems" Path="MySelectedItems"/>
    </pb:PushBindingManager.PushBindings>
</DataGrid>

ViewModel中的属性

public IList MySelectedItems
{
    get;
    set;
}

如果您有兴趣,可以在此处使用PushBinding下载演示项目:PushBindingInStyleDemo.zip

答案 1 :(得分:1)

有一个blog post here描述了如何对SelectedItems属性进行双向绑定。该示例使用ListBox,但是它应该与DataGrid一样好用,因为它们都是从MultiSelector派生的。

博文上有可下载的示例代码。