wpf - 数据网格复选框自动化

标签 wpf datagrid checkbox

我有一个带有复选框的数据网格。当我单击单元格时,我希望在选择包含它的单元格时自动选中该复选框。它现在正在做的是我需要选择单元格然后单击复选框,这对我们来说非常烦人。

<dg:DataGrid Name="GridUsureOperation" Margin="10,444,82,6" ItemsSource="{Binding}" Style="{StaticResource GridMenu}" SelectionMode="Single" SelectionUnit="Cell">
    <dg:DataGrid.Columns>
        <dg:DataGridTextColumn Header="Opération" Width="*" MinWidth="60" 
                               Binding="{Binding Operation.DescOperation}" 
                               IsReadOnly="True" />
        <dg:DataGridTextColumn Header="Dernière maintenance" Width="SizeToHeader" MinWidth="50"
                               Binding="{Binding DateDerniereMaintenance, StringFormat=yyyy-MM-dd}" 
                               IsReadOnly="True"/>
        <dg:DataGridTextColumn Header="Usure dernière maintenance" Width="SizeToHeader" MinWidth="50"
                               Binding="{Binding UsureDerniereOperation}" 
                               IsReadOnly="True"/>
        <dg:DataGridTextColumn Header="Fréquence(usure)" Width="SizeToHeader" MinWidth="50"
                               Binding="{Binding QteUsure}" 
                               IsReadOnly="True"/>
        <dg:DataGridTextColumn Header="Unité" Width="SizeToHeader" MinWidth="50"
                               Binding="{Binding TypeUsure.Description}" 
                               IsReadOnly="True"/>
        <dg:DataGridCheckBoxColumn Header="Forcer?" Width="SizeToHeader" MinWidth="50"
                               Binding="{Binding AfficherMaintenance}"                                         
                               IsReadOnly="False">

        </dg:DataGridCheckBoxColumn>
    </dg:DataGrid.Columns>
</dg:DataGrid>

最佳答案

我不喜欢使用 DataGridCheckBoxColumn,因为它需要先获得焦点,然后才能与复选框交互。所以我改为将 CheckBox 放在模板列中,您只需单击一下即可更改状态。

<dg:DataGridTemplateColumn Width="SizeToHeader">
    <dg:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Path=Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="2,0,2,0" />
        </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>

但是,如果您确实希望复选框在单击单元格中的任意位置时更改状态(而不仅仅是在复选框上),您可以使用以下代码,这会使 CheckBox 控件占据单元格的整个大小。

<dg:DataGridTemplateColumn Width="SizeToHeader">
    <dg:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Path=Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="2,0,2,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>

更新 我已经有一段时间没有做过 WPF 开发了。我在使用此解决方案时遇到了问题,因为 DataGrid 已集成到 WPF 库中,您不再需要该工具包了。复选框不想像以前写的那样更新支持属性,所以我添加了一个看起来确实有效的更完整的绑定(bind)语句。

关于wpf - 数据网格复选框自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493958/

相关文章:

c# - 样式化 Wpf 饼图

c# - WPF DataGrid Cell 不离开编辑模式

python - 如何使用 python-docx 将复选框表单插入到 .docx 文件中?

Javascript 替换方法在复选框 if/else 切换中不起作用

c# - 多个 ItemsSource 集合绑定(bind)

WPF ICollectionView 过滤

c# - WPF DataGrid 左上角选择所有标题按钮不聚焦网格

jquery - Bootstrap/jQuery 的最佳数据网格?

jquery - 需要使用 jQuery 在 CheckboxGroup 中进行选择

wpf - 根据计算机的 dpi 设置使用不同的图像