Dev控件中的GridControl如何设置Header的背景色

时间:2022-01-06 14:49:58

        <dxg:GridControl    ItemsSource="{Binding ItemsSource}" >
            <dxg:GridControl.View>
                <dxg:TableView Name="SelectorGridView" >
                </dxg:TableView>
            </dxg:GridControl.View>
            <dxg:GridControl.Columns>
                <dxg:GridColumn Header="TestA" FieldName="TestA" Width="60"/>
                <dxg:GridColumn Header="TestB" Binding="{Binding TestB,Mode=OneWay}" Width="140" / >
                <dxg:GridColumn Header="TestC" Binding="{Binding CI,Mode=TestCOneWay}" Width="140"/>
                <dxg:GridColumn Header="TestD" FieldName="TestD" Width="100" />
            </dxg:GridControl.Columns>
        </dxg:GridControl>


设置dxg:GridColumn列的标题颜色

4 个解决方案

#1


设置GridColumn的HeaderTemplate属性,使用DataTemplate。

#2


引用 1 楼 duanzi_peng 的回复:
设置GridColumn的HeaderTemplate属性,使用DataTemplate。

写了DataTemplate ,但是有点问题 ,背景色试过很多方法都只能覆盖TextBlock的区域

    <Style TargetType="{x:Type dxg:GridColumn}">
        <!--列头居中-->
        <Setter Property="HorizontalHeaderContentAlignment" Value="Center"></Setter>
        <!--列值居中-->
        <Setter Property="EditSettings">
            <Setter.Value>
                <dxe:TextEditSettings HorizontalContentAlignment="Center" />
            </Setter.Value>
        </Setter>
        <Setter Property="AllowColumnFiltering" Value="False"></Setter>

        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="#3D87D2">
                        <TextBlock Text="{Binding}"   Foreground="White"></TextBlock>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>




#3


引用 2 楼 saybookcat 的回复:
Quote: 引用 1 楼 duanzi_peng 的回复:

设置GridColumn的HeaderTemplate属性,使用DataTemplate。

写了DataTemplate ,但是有点问题 ,背景色试过很多方法都只能覆盖TextBlock的区域

    <Style TargetType="{x:Type dxg:GridColumn}">
        <!--列头居中-->
        <Setter Property="HorizontalHeaderContentAlignment" Value="Center"></Setter>
        <!--列值居中-->
        <Setter Property="EditSettings">
            <Setter.Value>
                <dxe:TextEditSettings HorizontalContentAlignment="Center" />
            </Setter.Value>
        </Setter>
        <Setter Property="AllowColumnFiltering" Value="False"></Setter>

        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="#3D87D2">
                        <TextBlock Text="{Binding}"   Foreground="White"></TextBlock>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>


那就修改DataGrid的列的Template,内嵌ControlTemplate 作为内容,网上有例子很多。

#4


引用 3 楼 duanzi_peng 的回复:
Quote: 引用 2 楼 saybookcat 的回复:

Quote: 引用 1 楼 duanzi_peng 的回复:

设置GridColumn的HeaderTemplate属性,使用DataTemplate。

写了DataTemplate ,但是有点问题 ,背景色试过很多方法都只能覆盖TextBlock的区域

    <Style TargetType="{x:Type dxg:GridColumn}">
        <!--列头居中-->
        <Setter Property="HorizontalHeaderContentAlignment" Value="Center"></Setter>
        <!--列值居中-->
        <Setter Property="EditSettings">
            <Setter.Value>
                <dxe:TextEditSettings HorizontalContentAlignment="Center" />
            </Setter.Value>
        </Setter>
        <Setter Property="AllowColumnFiltering" Value="False"></Setter>

        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="#3D87D2">
                        <TextBlock Text="{Binding}"   Foreground="White"></TextBlock>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>


那就修改DataGrid的列的Template,内嵌ControlTemplate 作为内容,网上有例子很多。

DataGrid这样做事可行的,但是dev控件特有的Theme阻止了这个设置的可行性。
该用其他控件实现了

#1


设置GridColumn的HeaderTemplate属性,使用DataTemplate。

#2


引用 1 楼 duanzi_peng 的回复:
设置GridColumn的HeaderTemplate属性,使用DataTemplate。

写了DataTemplate ,但是有点问题 ,背景色试过很多方法都只能覆盖TextBlock的区域

    <Style TargetType="{x:Type dxg:GridColumn}">
        <!--列头居中-->
        <Setter Property="HorizontalHeaderContentAlignment" Value="Center"></Setter>
        <!--列值居中-->
        <Setter Property="EditSettings">
            <Setter.Value>
                <dxe:TextEditSettings HorizontalContentAlignment="Center" />
            </Setter.Value>
        </Setter>
        <Setter Property="AllowColumnFiltering" Value="False"></Setter>

        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="#3D87D2">
                        <TextBlock Text="{Binding}"   Foreground="White"></TextBlock>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>




#3


引用 2 楼 saybookcat 的回复:
Quote: 引用 1 楼 duanzi_peng 的回复:

设置GridColumn的HeaderTemplate属性,使用DataTemplate。

写了DataTemplate ,但是有点问题 ,背景色试过很多方法都只能覆盖TextBlock的区域

    <Style TargetType="{x:Type dxg:GridColumn}">
        <!--列头居中-->
        <Setter Property="HorizontalHeaderContentAlignment" Value="Center"></Setter>
        <!--列值居中-->
        <Setter Property="EditSettings">
            <Setter.Value>
                <dxe:TextEditSettings HorizontalContentAlignment="Center" />
            </Setter.Value>
        </Setter>
        <Setter Property="AllowColumnFiltering" Value="False"></Setter>

        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="#3D87D2">
                        <TextBlock Text="{Binding}"   Foreground="White"></TextBlock>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>


那就修改DataGrid的列的Template,内嵌ControlTemplate 作为内容,网上有例子很多。

#4


引用 3 楼 duanzi_peng 的回复:
Quote: 引用 2 楼 saybookcat 的回复:

Quote: 引用 1 楼 duanzi_peng 的回复:

设置GridColumn的HeaderTemplate属性,使用DataTemplate。

写了DataTemplate ,但是有点问题 ,背景色试过很多方法都只能覆盖TextBlock的区域

    <Style TargetType="{x:Type dxg:GridColumn}">
        <!--列头居中-->
        <Setter Property="HorizontalHeaderContentAlignment" Value="Center"></Setter>
        <!--列值居中-->
        <Setter Property="EditSettings">
            <Setter.Value>
                <dxe:TextEditSettings HorizontalContentAlignment="Center" />
            </Setter.Value>
        </Setter>
        <Setter Property="AllowColumnFiltering" Value="False"></Setter>

        <Setter Property="HeaderTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="#3D87D2">
                        <TextBlock Text="{Binding}"   Foreground="White"></TextBlock>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>


那就修改DataGrid的列的Template,内嵌ControlTemplate 作为内容,网上有例子很多。

DataGrid这样做事可行的,但是dev控件特有的Theme阻止了这个设置的可行性。
该用其他控件实现了