【问题标题】:How do I get all rows from dataGrid that have a combobox checked如何从已选中组合框的 dataGrid 中获取所有行
【发布时间】:2015-03-25 09:31:15
【问题描述】:
 <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>

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

【问题讨论】:

  • 你能解释一下你在这里寻找什么吗?
  • 我需要知道,我选择了数据网格中的所有行(选中复选框)?
  • 你的物品来源是什么?
  • 对不起,我只是粘贴了一部分代码以供参考。

标签: wpf checkbox datagrid


【解决方案1】:

在此视图的数据上下文中,您可以通过执行此操作来获得所需 --

Your_Item_Source.Where(p=>p.Checked)

在您的 OrderHeader 类中,创建一个属性

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

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

{Binding IsSelected}

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

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

在该属性的setter中,设置AllOrderHeader中的所有OrderHeader.IsSelected = value,在getter中可以返回AllHeaders中item的状态

【讨论】:

  • 当我点击复选框时,“IsChecked”属性没有收到通知。我该如何解决这个问题?
【解决方案2】:

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

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

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

【讨论】:

  • 不用担心,我们都曾在某个时候经历过这种痛苦......你会度过的
猜你喜欢
  • 2011-06-07
  • 2019-11-17
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多