首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

需要WPF Toolkit控件的主题(尤其是DataGrid)

在云计算领域,WPF Toolkit是一个非常重要的工具,它提供了许多有用的控件,可以帮助开发人员快速构建漂亮的用户界面。其中,WPF Toolkit中的DataGrid控件是一个非常强大的数据表格控件,可以用于展示和编辑数据表格。

在使用WPF Toolkit的DataGrid控件时,可以使用主题来改变其外观和感觉。主题可以通过XAML文件来定义,并且可以通过将主题应用到DataGrid控件上来改变其外观。

以下是一个示例主题,可以用于DataGrid控件:

代码语言:<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
复制
代码语言:txt
复制
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
代码语言:txt
复制
                xmlns:tk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">

<Style TargetType="{x:Type tk:DataGrid}">

代码语言:txt
复制
   <Setter Property="Background" Value="#FFFFFF"/>
代码语言:txt
复制
   <Setter Property="BorderBrush" Value="#CCCCCC"/>
代码语言:txt
复制
   <Setter Property="BorderThickness" Value="1"/>
代码语言:txt
复制
   <Setter Property="RowDetailsVisibilityMode" Value="VisibleWhenSelected"/>
代码语言:txt
复制
   <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
代码语言:txt
复制
   <Setter Property="ScrollViewer.PanningMode" Value="Both"/>
代码语言:txt
复制
   <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
代码语言:txt
复制
   <Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
代码语言:txt
复制
   <Setter Property="Template">
代码语言:txt
复制
       <Setter.Value>
代码语言:txt
复制
           <ControlTemplate TargetType="{x:Type tk:DataGrid}">
代码语言:txt
复制
               <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
代码语言:txt
复制
                   <ScrollViewer x:Name="DG_ScrollViewer" Focusable="false">
代码语言:txt
复制
                       <ScrollViewer.Template>
代码语言:txt
复制
                           <ControlTemplate TargetType="{x:Type ScrollViewer}">
代码语言:txt
复制
                                <Grid>
代码语言:txt
复制
                                    <Grid.ColumnDefinitions>
代码语言:txt
复制
                                       <ColumnDefinition Width="*"/>
代码语言:txt
复制
                                       <ColumnDefinition Width="Auto"/>
代码语言:txt
复制
                                    </Grid.ColumnDefinitions>
代码语言:txt
复制
                                    <Grid.RowDefinitions>
代码语言:txt
复制
                                        <RowDefinition Height="*"/>
代码语言:txt
复制
                                        <RowDefinition Height="Auto"/>
代码语言:txt
复制
                                    </Grid.RowDefinitions>
代码语言:txt
复制
                                   <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Grid.Column="0" Grid.Row="0" Margin="{TemplateBinding Padding}" />
代码语言:txt
复制
                                   <ScrollBar x:Name="PART_HorizontalScrollBar" AutomationProperties.AutomationId="HorizontalScrollBar" Cursor="Arrow" Grid.Column="0" Grid.Row="1" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding Path=HorizontalOffset, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}" Style="{StaticResource ScrollBarStyle1}"/>
代码语言:txt
复制
                                   <ScrollBar x:Name="PART_VerticalScrollBar" AutomationProperties.AutomationId="VerticalScrollBar" Cursor="Arrow" Grid.Column="1" Grid.Row="0" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0" Orientation="Vertical" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding Path=VerticalOffset, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}" Style="{StaticResource ScrollBarStyle1}"/>
代码语言:txt
复制
                                </Grid>
代码语言:txt
复制
                            </ControlTemplate>
代码语言:txt
复制
                        </ScrollViewer.Template>
代码语言:txt
复制
                       <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
代码语言:txt
复制
                    </ScrollViewer>
代码语言:txt
复制
                </Border>
代码语言:txt
复制
            </ControlTemplate>
代码语言:txt
复制
        </Setter.Value>
代码语言:txt
复制
    </Setter>
代码语言:txt
复制
   <Setter Property="ColumnHeaderStyle">
代码语言:txt
复制
       <Setter.Value>
代码语言:txt
复制
           <Style TargetType="{x:Type tk:DataGridColumnHeader}">
代码语言:txt
复制
               <Setter Property="Background" Value="#DDDDDD"/>
代码语言:txt
复制
               <Setter Property="BorderBrush" Value="#999999"/>
代码语言:txt
复制
               <Setter Property="BorderThickness" Value="0,0,1,1"/>
代码语言:txt
复制
               <Setter Property="Padding" Value="6,0,6,0"/>
代码语言:txt
复制
               <Setter Property="SeparatorBrush" Value="#999999"/>
代码语言:txt
复制
               <Setter Property="SeparatorVisibility" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type tk:DataGrid}}, Path=AreColumnHeadersVisible, Converter={StaticResource BooleanToVisibilityConverter}}"/>
代码语言:txt
复制
               <Setter Property="Template">
代码语言:txt
复制
                   <Setter.Value>
代码语言:txt
复制
                       <ControlTemplate TargetType="{x:Type tk:DataGridColumnHeader}">
代码语言:txt
复制
                            <Grid>
代码语言:txt
复制
                                <Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}" SortDirection="{Binding Path=SortDirection, RelativeSource={RelativeSource TemplatedParent}}" IsClickable="{TemplateBinding CanUserSort}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}">
代码语言:txt
复制
                                   <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
代码语言:txt
复制
                                </Themes:DataGridHeaderBorder>
代码语言:txt
复制
                                <Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left" Style="{StaticResource ColumnHeaderGripperStyle}"/>
代码语言:txt
复制
                                <Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right" Style="{StaticResource ColumnHeaderGripperStyle}"/>
代码语言:txt
复制
                            </Grid>
代码语言:txt
复制
                        </ControlTemplate>
代码语言:txt
复制
                    </Setter.Value>
代码语言:txt
复制
                </Setter>
代码语言:txt
复制
            </Style>
代码语言:txt
复制
        </Setter.Value>
代码语言:txt
复制
    </Setter>
代码语言:txt
复制
   <Setter Property="RowStyle">
代码语言:txt
复制
       <Setter.Value>
代码语言:txt
复制
           <Style TargetType="{x:Type tk:DataGridRow}">
代码语言:txt
复制
               <Setter Property="Background" Value="Transparent"/>
代码语言:txt
复制
               <Setter Property="BorderBrush" Value="Transparent"/>
代码语言:txt
复制
               <Setter Property="BorderThickness" Value="0"/>
代码语言:txt
复制
               <Setter Property="HorizontalAlignment" Value="Stretch"/>
代码语言:txt
复制
               <Setter Property="IsTabStop" Value="False"/>
代码语言:txt
复制
               <Setter Property="Padding" Value="2"/>
代码语言:txt
复制
               <Setter Property="ValidationErrorTemplate">
代码语言:txt
复制
                   <Setter.Value>
代码语言:txt
复制
                       <ControlTemplate>
代码语言:txt
复制
                            <Grid ToolTip="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type tk:DataGridRow}}, Path=ValidationError}">
代码语言:txt
复制
                                <Ellipse Stroke="Red" Fill="Red" Width="10" Height="10"/>
代码语言:txt
复制
                            </Grid>
代码语言:txt
复制
                        </ControlTemplate>
代码语言:txt
复制
                    </Setter.Value>
代码语言:txt
复制
                </Setter>
代码语言:txt
复制
               <Setter Property="Template">
代码语言:txt
复制
                   <Setter.Value>
代码语言:txt
复制
                       <ControlTemplate TargetType="{x:Type tk:DataGridRow}">
代码语言:txt
复制
                            <Grid x:Name="DGR_Root">
代码语言:txt
复制
                                <Grid.RowDefinitions>
代码语言:txt
复制
                                    <RowDefinition Height="*"/>
代码语言:txt
复制
                                    <RowDefinition Height="Auto"/>
代码语言:txt
复制
                                </Grid.RowDefinitions>
代码语言:txt
复制
                                <Grid.ColumnDefinitions>
代码语言:txt
复制
                                   <ColumnDefinition Width="Auto"/>
代码语言:txt
复制
                                   <ColumnDefinition Width="*"/>
代码语言:txt
复制
                                </Grid.ColumnDefinitions>
代码语言:txt
复制
                                <Grid.RenderTransform>
代码语言:txt
复制
                                   <TransformGroup>
代码语言:txt
复制
                                       <ScaleTransform/>
代码语言:txt
复制
                                        <SkewTransform/>
代码语言:txt
复制
                                        <RotateTransform/>
代码语言:txt
复制
                                       <TranslateTransform/>
代码语言:txt
复制
                                    </TransformGroup>
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • [WPF]是时候将WPF控件库从.Net Framework升级到.NET Core 3.1

    去年中我曾考虑将我的控件库项目Kino.Toolkit.Wpf升级到.NET Core,不过很快放弃了,因为当时.NET Core是预览版,编译WPF还需要使用最新的Visual Studio 2019,这样作为一个教学项目不够友好。到了今天.NET Core 3.1都出来了,已经正式支持WPF和Winform,Visual Studio 2019也已经普及,我觉得应该是时候将我的控件库升级到.NET Core。那么现在是WPF正式迁移到.NET Core的好时机吗?我认为还不是,把一个成熟的WPF程序迁移到.NET Core风险任然较大,而且不见得有多少好处。但对各种WPF类库/控件库来说情况又不一样了,为了可以满足更多的用户,让控件库可以同时支持.NET Framework和.NET Core十分重要;而且通常类库对其它组件的依赖较少,升级的风险没那么大。所以要玩.NET Core的WPF,从类库/控件库开始是一个好的选择。

    01
    领券