如何从dataGrid获取已检查组合框的所有行

时间:2015-03-25 09:31:16

标签: wpf checkbox datagrid

 <DataGrid>
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.Header>
                    <CheckBox Name="CheckALL" />
                </DataGridTemplateColumn.Header>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Name="chkDiscontinue" IsChecked="{Binding Path=IsChecked, ElementName=CheckALL, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

我可以点击标题复选框并选中所有复选框,但是在这里,我需要将所有选中的网格绑定到&#39; IsChecked&#39;

2 个答案:

答案 0 :(得分:1)

在这个视图的datacontext中,你可以通过这样做得到 -

Your_Item_Source.Where(p=>p.Checked)

在OrderHeader类中,创建一个属性

public bool IsSelected {get;set;} // with inotify please

然后将你的组合框chkDiscontinue绑定到

{Binding IsSelected}

将您的标题复选框绑定到ViewModel属性

public bool SelectAll {get;set;} // with inotify please

在此属性的setter中,在AllOrderHeader中设置所有OrderHeader.IsSelected =值,在getter中,您可以返回AllHeaders中项目的状态

答案 1 :(得分:0)

除了Muds所说的,如果你想将IsChecked绑定到SelectAll,你应该使用类似的东西:

Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path= DataContext.SelectAll}

很抱歉没有发布回复,但我没有足够的分数:)