使用BindingContext获取当前对象没问题,但是当我在datagridview中选择了许多行时该怎么办?如何遍历每个对象?
最佳答案
这既不容易也不有趣。默认情况下,不支持在数据网格中绑定多个选定的行。我从Functional Fun使用MultiSelectBehavior:
http://blog.functionalfun.net/2009/02/how-to-databind-to-selecteditems.html
这些是我要使其正常工作的注意事项:
为了使这个工作,我做到了:
将此名称空间定义添加到视图中:
xmlns:ff =“ clr-namespace:FunctionalFun.UI.Behaviours; assembly = MultiSelectBehavior”
在数据网格内,添加此处显示的最后两行(ff:...和SelectionMode ....):
ff:MultiSelectorBehaviours.SynchronizedSelectedItems =“ {Binding SelectedTasks}”“
SelectionMode =“扩展”
注意:在视图模型中,即使首次声明SelectedSelects也不能为null。
否:private ObservableCollection selectedTasks;
是:私有ObservableCollection selectedTasks = new ObservableCollection();
这是一些有效的实际代码:
xmlns:ff="clr-namespace:FunctionalFun.UI.Behaviours;assembly=MultiSelectBehavior"
<DataGrid Grid.Row="1" AutoGenerateColumns="False" IsReadOnly="True" HeadersVisibility="Column"
ItemsSource="{Binding SelectedApplicationServer.ApplicationsWithOverrideGroup}"
ff:MultiSelectorBehaviours.SynchronizedSelectedItems="{Binding SelectedApplicationsWithOverrideGroup}"
SelectionMode="Extended">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Application.Name}" Header="Name" Width="150" />
<DataGridTextColumn Binding="{Binding Path=Application.Version}" Header="Version" Width="100"/>
<DataGridTextColumn Binding="{Binding Path=CustomVariableGroup.Name}" Header="Override Group" Width="*"/>
</DataGrid.Columns>
</DataGrid>
希望能帮助到你。
编辑:我只是将功能性乐趣代码添加为解决方案中的一个项目,然后在我的视图项目中引用了它:
关于c# - BindingContext和多选的datagridview,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8682911/