【问题标题】:How to get checkbox in the DataGridTemplateColumn?如何获取 DataGridTemplateColumn 中的复选框?
【发布时间】:2013-09-09 23:22:48
【问题描述】:

我正在为用户删除多个数据库寄存器创建一个窗口,使用DataGrid 显示数据和Button 执行删除

所以我在DataGrid 中添加了DataGridTemplateColumn,在此DataGridTemplateColumn 中添加了CheckBox

<DataGrid Name="WordList" Margin="10" Width="230" AutoGenerateColumns="False" 
            SelectionMode="Single" SelectionChanged="WordList_SelectionChanged" 
            CanUserAddRows="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox Name="WordChecked" HorizontalAlignment="Center" 
                        VerticalAlignment="Center"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Binding="{Binding Path=Word}" Header="Word" Width="1*" 
            IsReadOnly="True"/>
    </DataGrid.Columns>
</DataGrid>

请问,如何使用 C# 访问此 CheckBox 以检查它是否被选中?

【问题讨论】:

  • 在Model中添加bool属性,在CheckBox中添加bint,就可以查询你的收藏了
  • 是否有办法在所有行中访问此单元格?
  • @sa_ddam213 我认为这样的事情不属于模型,因为它与域无关。我认为更好的方法是在复选框上放置一个事件,将当前选定的数据网格项目添加到驻留在 ViewModel 中的列表中,然后从该列表中删除按钮。
  • 非常感谢@Jim!我会试试这个解决方案!
  • 当您单击要删除的行的复选框时,应该设置Datagrid.SelectedItem

标签: c# wpf checkbox datagrid


【解决方案1】:

我推荐的方法是在 ViewModel 中保存一个 List&lt;Item&gt;,每当您检查行中的 CheckBox 时,数据网格的 SelectedItem 将被设置,您将选择的项目添加到 @987654324 @。然后,当单击按钮时,您将删除 List 中的所有记录。

理想情况下,您还想使用Commands 来实现它。

【讨论】:

    【解决方案2】:
    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <CheckBox IsChecked= "{Binding checked, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Click="CheckBox_Click"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    
    private void CheckBox_Click(object sender, RoutedEventArgs e)
    {
       int index = DGItems.SelectedIndex;
       DataRowView drv = (DataRowView)DGItems.Items[index];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多