数据网格复选框自动化

Dav*_*lle 2 wpf checkbox datagrid

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

<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>
Run Code Online (Sandbox Code Playgroud)

vig*_*ity 8

我不喜欢使用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>
Run Code Online (Sandbox Code Playgroud)

但是,如果您确实希望复选框在单击单元格中的任何位置时(而不仅仅是复选框上)更改状态,则可以使用以下代码,这使得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>
Run Code Online (Sandbox Code Playgroud)

更新 我很长一段时间没有完成WPF开发.我现在使用这个解决方案时出现了问题,因为DataGrid已经融入WPF库,你不再需要工具包了.该复选框不想像以前写的那样更新后备属性,所以我添加了一个看起来很有用的更完整的绑定语句.