Если вы посмотрите на исходный код DataGrid
на 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>
И он использует DataGridCellFocusVisualPrimaryBrush
и DataGridCellFocusVisualSecondaryBrush
ресурсов.Поэтому, если вы хотите изменить границу, самое простое, что вы можете сделать, это переопределить эти два ресурса.
<SolidColorBrush x:Key="DataGridCellFocusVisualPrimaryBrush" Color="Transparent"/>
<SolidColorBrush x:Key="DataGridCellFocusVisualSecondaryBrush" Color="Transparent"/>
Примечание - граница фокуса существует по причине - пользователи с клавиатуройи устройства доступа должны знать, на какую ячейку в данный момент сфокусированы.Если вы полностью удалите границу, это может затруднить использование приложения для них.
Если вам нужен еще больший контроль, вы можете скопировать шаблон по умолчанию и изменить его.Это можно сделать, щелкнув правой кнопкой мыши элемент управления в Designer или Структура документа , выбрав Изменить дополнительный шаблон и выбрав DataGridCell
.Выберите Создать копию , и на вашей странице будет создана копия шаблона по умолчанию.Обратите внимание, что вам, возможно, придется заменить StaticResource
декларации прямыми ресурсами (SolidColorBrush
и т. Д.)