如何抑制DataGrid单元格选择边框?

发布于 2024-10-27 17:55:14 字数 248 浏览 0 评论 0原文

我已尝试按照此处的建议设置边框样式 禁用 DataGrid 当前单元格FullRow 选择模式中的边框,但它并没有完全完成该操作。当您使用鼠标进行选择时,会禁用单元格边框选择,但在使用键盘进行选择时,仍然会出现虚线单元格边框。有什么建议吗?

I've tried setting border style as suggested here Disable DataGrid current cell border in FullRow selection mode, but it doesn't do the thing fully. Is disables cell border selection when you select using a mouse, but there is still a dashed cell border when making selection using keyboard. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

渡你暖光 2024-11-03 17:55:14

您看到的虚线框是单元格的 FocusedVisualStyle

您需要覆盖它,使其为空白。

这里有 2 个选项(其中一个必须是正确的,但因为我没有时间尝试,我不知道哪个)

  • 视觉样式直接在单元格上设置

,这意味着你必须通过 CellStyle 属性:

<DataGrid.CellStyle>
   <Style TargetType="DataGridCell">
      <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
   </Style>
</DataGrid.CellStyle>

或者如果您想遵守 MS 的模板指南:(

<DataGrid.Resources>

    <!--CellFocusVisual-->
    <Style x:Key="CellFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border>
                        <Rectangle StrokeThickness="0" Stroke="#00000000" StrokeDashArray="1 2"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</DataGrid.Resources>

<DataGrid.CellStyle>
   <Style TargetType="DataGridCell">
      <Setter Property="FocusVisualStyle" Value="{StaticResource CellFocusVisual}"/>
   </Style>
</DataGrid.CellStyle>

这样,您可以看到它是如何完成的)

  • 其他选项:它是通过 ElementStyle 或 < code>EditingElementStyle

那里比较麻烦,因为 ElementStyleEditingElementStyle 是在列上定义的,这意味着您必须编辑每个列的 ElementStyleEditingElementStyle

但基本上,这是同一件事:您将 FocusVisualStyle 设置为 null 或通过每列上的 ElementStyle 和/或 EditingElementStyle 上面定义的样式

the dashed box you see is the cell's FocusedVisualStyle

you need to override it so that it is blank.

2 options here (one of them has to be the right one but as I didn't have time to try, I don't know which)

  • the visualStyle is set on the cell directly

this means you have to set it through the CellStyle property:

<DataGrid.CellStyle>
   <Style TargetType="DataGridCell">
      <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
   </Style>
</DataGrid.CellStyle>

or if you want to comply with MS's templating guidelines:

<DataGrid.Resources>

    <!--CellFocusVisual-->
    <Style x:Key="CellFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border>
                        <Rectangle StrokeThickness="0" Stroke="#00000000" StrokeDashArray="1 2"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</DataGrid.Resources>

<DataGrid.CellStyle>
   <Style TargetType="DataGridCell">
      <Setter Property="FocusVisualStyle" Value="{StaticResource CellFocusVisual}"/>
   </Style>
</DataGrid.CellStyle>

(this way, you can see how it is done)

  • other option: it is done via the ElementStyle or the EditingElementStyle

this is more of a hasle there, because the ElementStyle and EditingElementStyle are defined on the Column, wich means you have to edit each column's ElementStyle and EditingElementStyle.

but basically, this is the same thing: you set up the FocusVisualStyle to null or the style defined above through the ElementStyle and/or EditingElementStyle on each Column

冷…雨湿花 2024-11-03 17:55:14

您可以将 Focusable 设置为 False。

<DataGrid ...
      SelectionUnit="FullRow">
   <DataGrid.CellStyle>
      <Style TargetType="DataGridCell">
         <Setter Property="BorderThickness" Value="0"/>
         <Setter Property="Focusable" Value="False"/>
      </Style>
   </DataGrid.CellStyle>
   <!-- ... -->
</DataGrid>

请注意,如果将 DataGridCell.Focusable 设置为 false,则使用向上/向下箭头键在数据网格中导航将不起作用。

You can set Focusable to False.

<DataGrid ...
      SelectionUnit="FullRow">
   <DataGrid.CellStyle>
      <Style TargetType="DataGridCell">
         <Setter Property="BorderThickness" Value="0"/>
         <Setter Property="Focusable" Value="False"/>
      </Style>
   </DataGrid.CellStyle>
   <!-- ... -->
</DataGrid>

Note that if you make DataGridCell.Focusable false then navigation in the datagrid with up/down arrow keys won't work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文