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

时间:2016-09-06 15:25:04

标签: c# wpf datagrid

我为DataGrid DataGridCheckBoxColumn创建了以下样式:

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

然后在DataGrid上:

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

工作正常。

有没有办法让上面的内容更具有针对DataGridCheckBoxColumn的通用样式,所以我不必将样式分配给每个DataGridCheckBoxColumn?

我尝试过以下但没有效果:

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

...然后删除了样式分配:

<DataGridCheckBoxColumn ...>

1 个答案:

答案 0 :(得分:2)

您可以创建一个自定义列,并将此样式设置为该列,然后您可以添加自己的自定义列,而不是添加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