【问题标题】:WPF DataGrid with checkbox column and Button to validate all checked checkboxes带有复选框列和按钮的 WPF DataGrid 用于验证所有选中的复选框
【发布时间】:2019-08-05 09:23:27
【问题描述】:

在 WPF 项目中,我有一个带有名为 CommDataGrid 的 dataGrid 的页面。它包含几个列和一个复选框第二列:

 <DataGrid x:Name="CommDataGrid"
                  AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="ID" Binding="{Binding id}"/>
                    <DataGridTemplateColumn Header="ENTREE">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding dateEntree,StringFormat='dd/MM/yyyy'}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTextColumn Header="ARTICLE" Binding="{Binding article}"/>
                    <DataGridTextColumn Header="N° PALETTE" Binding="{Binding numPal}"/>
                    <DataGridTextColumn Header="ADRESSE" Binding="{Binding picking}"/>
                    <DataGridTextColumn Header="PBRUT" Binding="{Binding SumPdsBrut}"/>
                    <DataGridTextColumn Header="POIDS NET" Binding="{Binding SumPdsNet}"/>
                    <DataGridTextColumn Header="LOT" Binding="{Binding MinLot}"/>
                    <DataGridTemplateColumn Header="DATE CONGELATION">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding MinDatecong,StringFormat='dd/MM/yyyy'}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="DLUO">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding MinDLUO,StringFormat='dd/MM/yyyy'}"/>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>

                    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox x:Name="ChoixPalette_Ckb"
                                          CommandParameter="{Binding Path= id}">

                                </CheckBox>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

用户可以检查一个或多个复选框。 在此页面中,我还有一个按钮。这是我想在该 Button 的 Click 事件中实现的目标: 对于所有选中的 CheckBox,它会获取 DataGrid (id) 第一列的值,然后添加代码来更新 SQL 数据库:

 private void Valid_Checked_Palette_Btn_Click(object sender, RoutedEventArgs e)
    {
        DataGridRow row = (DataGridRow)CommDataGrid.ItemContainerGenerator.ContainerFromIndex(CommDataGrid.SelectedIndex);
        CheckBox chk = CommDataGrid.Columns[10].GetCellContent(row).Parent as CheckBox;
        foreach(CheckBox c in CommDataGrid.Items)
        {
            if (chk.IsChecked==true)
            {
                object id = ((CheckBox)sender).CommandParameter;
                int _id = Convert.ToInt32(id);
                Messages.InformationMessage($"You Checked {_id}");

                // Code will be added later...
            }
        }
    }

当然,这段代码是行不通的。有人可以让我进入赖特的方向吗? 谢谢

【问题讨论】:

    标签: wpf linq-to-sql


    【解决方案1】:

    您应该将CheckBoxIsChecked 属性绑定到数据对象的bool 属性并遍历DataGridItemsItemsSource 集合:

    <CheckBox x:Name="ChoixPalette_Ckb" IsChecked="{Binding IsChecked}" ... />
    

    private void Valid_Checked_Palette_Btn_Click(object sender, RoutedEventArgs e)
    {
        foreach (var item in CommDataGrid.Items.OfType<YourClass>())
        {
            if (item.IsChecked)
            {
                //...
            }
        }
    }
    

    数据对象YourClass是定义idarticlenumPal、...属性的类。

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 2018-08-03
      • 1970-01-01
      • 2014-10-14
      • 2018-06-24
      • 2018-10-19
      • 2010-10-19
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多