c# - 如何将样式设置为 WPFToolkit DataGrid?

标签 c# wpf xaml wpfdatagrid

我是 WPF 新手,正在使用 C# 和 .NET3.5 进行开发。我有一个 WPFToolkit 的 DataGrid 添加到我的窗口。我无法弄清楚如何将样式设置为列标题和行?行是动态添加的。

        <my:datagrid name="myGrid" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" itemssource="{Binding }" autogeneratecolumns="False">
                 SelectionMode="Extended" SelectionUnit="FullRow" CanUserReorderColumns="False" 
                 ColumnHeaderHeight="42" Background="#FFF7F7F7" BorderBrush="Transparent" 
                 HorizontalGridLinesBrush="#FFEAEAEA" VerticalGridLinesBrush="#FFEAEAEA" 
                 HeadersVisibility="Column" RowHeaderWidth="0" HorizontalContentAlignment="Center" 
                 VerticalContentAlignment="Center" ClipboardCopyMode="None" MinRowHeight="28" 
                 Rowremoved="#FFF7F7F7" RowDetailsVisibilityMode="Visible" RowHeight="28" 
                 DataContextChanged="serverGrid_DataContextChanged">
        <my:datagrid.columns>
            <my:datagridtextcolumn header="Enabled" width="120" binding="{Binding Path=Name}" />
            <my:datagridtextcolumn header="Enabled" width="70" binding="{Binding Path=Country}" />
            <my:datagridtextcolumn header="Enabled" width="100" binding="{Binding Path=Description}" />
        </my:datagrid.columns>

    </my:datagrid>

在资源中添加了样式代码:

    <!-- DataGridColumnHeader-->
    <Style x:Key="ColumnHeaderStyle" TargetType="{x:Type Thumb}">
        <setter property="Background" value="#9DCFD0" />
        <setter property="FontFamily" value="Arial Rounded MT" />
        <setter property="FontSize" value="14" />
        <setter property="FontWeight" value="Bold" />
        <setter property="Foreground" value="#00545B" />
        <setter property="VerticalContentAlignment" value="Center" />
        <setter property="HorizontalContentAlignment" value="Center" />
    </Style>

在样式的 TargetType 中,我无法设置为 my:DataGridColumnHeader 或只是 DataGridColumnHeader。它说“......未找到”。在 my:DataGridTextColumn 中,我猜 HeaderStyle 是设置样式的属性。但我能够为其定义样式。

还有如何为动态添加的行设置样式?我哪里错了? 非常感谢任何帮助。

最佳答案

你可以这样做:

首先是 header 的命名空间:

xmlns:Custom="http://schemas.microsoft.com/wpf/2008/toolkit"

那么这是风格:

<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type Custom:DataGridColumnHeader}">
        <Setter Property="HorizontalAlignment" Value="Center"></Setter>
        <Setter Property="Foreground" Value="#654b24"></Setter>
        <Setter Property="FontWeight" Value="bold"></Setter>
        <Setter Property="Height" Value="30"></Setter>
        <Setter Property="Background">
            <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#f7f3de" Offset="0.1"/>
                    <GradientStop Color="#Fcfcfc" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>

关于c# - 如何将样式设置为 WPFToolkit DataGrid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333053/

相关文章:

C# - 从另一个字符串中删除第一次出现的子字符串的最简单方法

c# - 具有 Entity Framework Core 2.0 的多个子实体中的相同属性名称

WPF StaticResource 绑定(bind)到子属性

c# - 替换本地 : keyword with a path? 的适当方法是什么

c# - WCF WSDL 只提供复杂的类型/方法

c# - 将 WCF 服务从测试控制台应用程序移至 IIS

wpf - 如何使用 ShinyRed WPF 样式?

c# - 使用转换器中的资源

.net - 如何将图 block (图像)拖放到指定位置? WPF

c# - 如何仅在 wpf 列表框的一行上更改前景色?