如何为DataGridCheckBoxColumn创建通用编辑样式

本文关键字:编辑 样式 创建 DataGridCheckBoxColumn | 更新日期: 2023-09-27 18:05:58

我已经为DataGrid创建了以下样式:

<Style x:Key="TextColumnEditStyle" TargetType="TextBox">
  <Setter...>
  <Setter...>
</Style>

Then on the DataGrid:

<DataGridCheckBoxColumn EditingElementStyle="{StaticResource TextColumnEditStyle}"...>

很好。

是否有一种方法,使上述更通用的风格,目标DataGridCheckBoxColumn,所以我不需要分配每个DataGridCheckBoxColumn的风格?

我尝试了以下方法,但是没有效果:

<Style TargetType="DataGridCheckBoxColumn">
  <Setter...>
  <Setter...>
</Style>

…然后去掉style赋值:

<DataGridCheckBoxColumn ...>

如何为DataGridCheckBoxColumn创建通用编辑样式

你可以用这个样式创建一个自定义列,然后你可以添加你自己的自定义列,而不是添加DataGridCheckBoxColumn,这将有你的样式应用

创建一个新列,比如MyColumn,这样MyColumn.xaml看起来像

<DataGridCheckBoxColumn  x:Class="TestApp.MyColumn"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:TestApp"
             EditingElementStyle="{StaticResource TextColumnEditStyle}"
             mc:Ignorable="d"/>

MyColumn.xaml.cs看起来像

public partial class MyColumn : DataGridCheckBoxColumn
{
    public MyColumn()
    {
        InitializeComponent();
    }
}

然后你使用网格的视图可以这样使用

<Grid>
    <DataGrid ItemsSource="{Binding Items}">
        <DataGrid.Columns>
            <local:MyColumn Binding="{Binding .}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

你可以在一个资源中创建TextColumnEditStyle,这个资源将被新的自定义列使用。