UWP Toolkit DataGrid удалить выбранную границу - PullRequest
0 голосов
/ 10 октября 2018

Я хочу удалить сетку данных выбранной границы ячейки.Я пробовал много способов, но я не могу удалить выделенную границу ячейки.

Ниже приведен мой пример кода.

<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>

Удалить выбранную границу ячейки

Я также добавил стиль для ячейки сетки данных и строки сетки данных.Пожалуйста, проверьте прикрепленный снимок экрана для образца демонстрации.

Спасибо, я

1 Ответ

0 голосов
/ 10 октября 2018

Если вы посмотрите на исходный код 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 и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...