2

我的这个项目必须使用免费的 WPF DataGrid(我认为 Infragistics 库很糟糕,我在此之后将其收回)。

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

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

有什么提示可以通过 MVVM 干净地做到这一点吗?

4

2 回答 2

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

于 2012-06-01T16:36:38.247 回答
1

这里有一篇博客文章描述了如何对 SelectedItems 属性进行双向绑定。该示例使用一个 ListBox,但应该与 DataGrid 一样工作,因为它们都派生自 MultiSelector。

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

于 2012-06-01T16:41:36.073 回答