在启用文本换行的情况下,在编辑模式下从 DataGridCell 中删除边框

Remove border from DataGridCell in edit mode while text wrap is enabled

我有一个数据网格,我不想在任何时候显示网格线。

我几乎已经用下面的代码工作了:

<DataGrid  
        AutoGenerateColumns="False" Height="Auto" 
        Name="dataGrid1" Width="504" 
        ItemsSource="{Binding SourceCollection}" 
        DockPanel.Dock="Top" GridLinesVisibility="None" 
        CanUserSortColumns="False" 
        ColumnWidth="Auto" HeadersVisibility="None" 
        FontSize="16" FontFamily="Tahoma" MinRowHeight="30">
 <DataGrid.Columns>
     <DataGridTextColumn Binding="{Binding index}" />
     <DataGridTextColumn Binding="{Binding des}" Width="20*">
     </DataGridTextColumn>
 </DataGrid.Columns>
 <DataGrid.CellStyle>
     <Style>
         <Style.Triggers>
             <Trigger Property="DataGridCell.IsSelected" Value="True">
                 <Setter Property="DataGridCell.Background" Value="White" />
                 <Setter Property="DataGridCell.Foreground" Value="Black" />
                 <Setter Property="DataGridCell.BorderBrush" Value="White" />
                 <Setter Property="DataGridCell.BorderThickness" Value="1" />
             </Trigger>                  
         </Style.Triggers>
     </Style>
 </DataGrid.CellStyle>
 <DataGrid.RowStyle>
     <Style TargetType="DataGridRow">
         <Style.Triggers>
             <Trigger Property="IsSelected" Value="True">
                 <Setter Property="Background" Value="White" />
     </Trigger>
         </Style.Triggers>
     </Style>
 </DataGrid.RowStyle>
<DataGrid>

但是一旦我为第二列启用文本换行,在编辑模式下单元格周围就会显示一条蓝线

<DataGridTextColumn.ElementStyle>
<Style>
    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
    <Style>
        <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
    </Style>
</DataGridTextColumn.EditingElementStyle>

那么如何在编辑模式下删除 DataGridCell 中的蓝线,同时保留 TextWrap 选项?

对于元素样式,您可以使用 TextBlock,对于元素编辑样式,您可以使用文本框,并将其 borderthickness 设置为 0

<DataGridTextColumn.ElementStyle>
                    <Style TargetType="{x:Type TextBlock}" >                          
                        <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    </Style>                     
                </DataGridTextColumn.ElementStyle>
                <DataGridTextColumn.EditingElementStyle>
                    <Style  TargetType="{x:Type TextBox}">
                        <Setter Property="BorderThickness" Value="0"/>
                        <Setter Property="TextWrapping" Value="Wrap" />
                    </Style>
                </DataGridTextColumn.EditingElementStyle>