使用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/

10-13 07:38