对于我的这个项目,必须使用免费的WPF DataGrid(我认为Infragistics库是坏的,我在此之后收回它)。
看起来DataGrid没有干净的MVVM友好方式获取selectedRows列表?
我可以将数据绑定到SelectedItem="{Binding SelectedSourceFile}"
,但这只显示第一个选定的行。需要能够获得所有选定的行。
通过MVVM干净地做任何提示?
答案 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派生的。
博文上有可下载的示例代码。