UWP 工具包 DataGrid 删除选定边框

标签 uwp datagrid

我想删除数据网格选定的单元格边框。 我尝试了很多方法,但无法删除选定的单元格边框。

下面是我的示例代码。

<Page.Resources>
   <Style TargetType="controls:DataGridCell">
        <Setter Property="BorderThickness" Value="0,0,1,0"/>
        <Setter Property="BorderBrush" Value="Red"></Setter>
        <Setter Property="FocusVisualPrimaryThickness" Value="0"></Setter>
        <Setter Property="FocusVisualSecondaryThickness" Value="0"></Setter>

        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Padding" Value="5,0,10,10"/>
    </Style>
    <Style TargetType="controls:DataGrid">
        <Setter Property="FontSize" Value="25" />
        <Setter Property="BorderThickness" Value="0"></Setter>
        <Setter Property="FocusVisualPrimaryThickness" Value="0"></Setter>
        <Setter Property="FocusVisualSecondaryThickness" Value="0"></Setter>
    </Style></Page.Resources>

<controls:DataGrid x:Name="dataGrid1" 
        Height="600" Margin="12" FrozenColumnCount="2"
        AutoGenerateColumns="False" GridLinesVisibility="Horizontal"  
        AlternatingRowBackground="LightGray"
        HeadersVisibility="None"
        FocusVisualPrimaryThickness="0"
        FocusVisualSecondaryThickness="0"
        BorderThickness="1" SelectionMode="Extended" AllowFocusOnInteraction="False"
        CanUserReorderColumns="False" CanUserResizeColumns="False" SelectionChanged="dataGrid1_SelectionChanged"
        >
        <controls:DataGrid.Columns>
            <controls:DataGridTemplateColumn Header="Name" Width="300">
                <controls:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate x:DataType="local:Customer" >
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                            <TextBlock Padding="5,0,5,0" Text="{x:Bind FirstName}"/>
                            <TextBlock Text="{x:Bind LastName}"/>
                        </StackPanel>
                    </DataTemplate>
                </controls:DataGridTemplateColumn.CellTemplate>
            </controls:DataGridTemplateColumn>
            <controls:DataGridTemplateColumn Header="Address">
                <controls:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate x:DataType="local:Customer">
                            <TextBlock Padding="5,0,5,0" Text="{x:Bind Address}" />
                    </DataTemplate>
                </controls:DataGridTemplateColumn.CellTemplate>
            </controls:DataGridTemplateColumn>
        </controls:DataGrid.Columns>
    </controls:DataGrid>

Remove selected cell border

我也为数据网格单元格和数据网格行设置了样式。请查看随附的示例演示屏幕截图。

谢谢 我

最佳答案

如果您查看 DataGrid source code on GitHub ,您将看到单元格焦点视觉是硬编码的:

<Grid x:Name="FocusVisual" IsHitTestVisible="False" Opacity="0">    
    <Rectangle Stroke="{ThemeResource DataGridCellFocusVisualPrimaryBrush}"
               StrokeThickness="2" 
               Fill="Transparent" 
               HorizontalAlignment="Stretch" 
               VerticalAlignment="Stretch" 
               IsHitTestVisible="False"/>    
    <Rectangle Stroke="{ThemeResource DataGridCellFocusVisualSecondaryBrush}" 
               StrokeThickness="1" 
               Fill="Transparent"
               HorizontalAlignment="Stretch" 
               VerticalAlignment="Stretch" 
               IsHitTestVisible="False" 
               Margin="2"/>
</Grid>

它使用 DataGridCellFocusVisualPrimaryBrushDataGridCellFocusVisualSecondaryBrush 资源。因此,如果您想更改边框,最简单的方法就是覆盖这两个资源。

<SolidColorBrush x:Key="DataGridCellFocusVisualPrimaryBrush" Color="Transparent"/>
<SolidColorBrush x:Key="DataGridCellFocusVisualSecondaryBrush" Color="Transparent"/>

注意 - 焦点边框的存在是有原因的 - 使用键盘和辅助设备的用户需要它来知道当前聚焦于哪个单元格。如果完全删除边框,可能会使应用程序难以为他们使用。

如果您想要更多控制,可以复制默认模板并进行修改。为此,您可以右键单击设计器文档大纲中的控件,选择编辑其他模板,然后选择DataGridCell。选择创建副本,这将在您的页面中生成默认模板的副本。请注意,您可能必须用直接资源(SolidColorBrush 等)替换 StaticResource 声明

关于UWP 工具包 DataGrid 删除选定边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734020/

相关文章:

.net - 在 DataGrid 单元格中添加一个小的彩色矩形

javascript - 如何使用 AJAX、计算字段、可排序列、粘贴等创建 SlickGrid?

c# - 努力从带有参数的存储过程填充数据网格

uwp - 开发运维 : Error CS0234: The type or namespace name 'ApplicationModel' does not exist in the namespace 'Windows'

c# - UWP NavigationView 通过 MVVM 切换到另一个页面

c# - Encoding.GetEncoding 无法在 UWP 应用程序中工作

apache-flex - Flex 3 DataGrid 列宽问题

c# - Xamarin.Forms 2.2 的签名板

c# - 当宽度变小时,VisualStateManager 不会在 UWP 中隐藏控件

WPF:将按钮列添加到数据网格