Как отменить выделение строки WPF DataGrid? - PullRequest
0 голосов
/ 08 октября 2011

У меня есть WPF DataGrid, и мне нужно выбрать несколько строк в DataGrid.После того, как выбор сделан, синяя линия выделения остается в ряду, и я не могу понять, как от нее избавиться.Я пытался щелкнуть где-нибудь еще, но синяя линия остается в строке.

enter image description here

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Вы можете обработать событие IsKeyboardFocusWithinChanged в вашем коде позади файла, чтобы установить для SelectedItem значение null, как это -

private void dg_IsKeyboardFocusWithinChanged(object sender, DependencyPropertyChangedEventArgs e)
{
   if (!(bool)e.NewValue)
   {
       (sender as DataGrid).SelectedItem = null;
   }
}

Файл Xaml:

<DataGrid x:Name="dg" IsKeyboardFocusWithinChanged="dg_IsKeyboardFocusWithinChanged"/>

Если вам не нужна граница выделения в вашей сетке данных, вам нужно переопределить System.HighlightBrush и добавить ее в свою сетку данных. Ресурсы, подобные этой -

<DataGrid>
    <DataGrid.Resources>
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
       <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
    </DataGrid.Resources>
<DataGrid>
0 голосов
/ 08 октября 2011

Хотя я не знаю, что именно вы хотите сделать, вы можете управлять хайлайном с помощью переопределения стилей DataGridCell и DataGridRow. Я покажу вам пример, который может или не может быть то, что вы хотите сделать. Я желаю, чтобы это помогло вам.

<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
            <Style.Triggers>
                <Trigger Property="IsSelected"
                        Value="True">
                    <Setter Property="BorderThickness"
                        Value="0" />
                </Trigger>
                <Trigger Property="IsFocused"
                        Value="False">
                    <Setter Property="Background"
                        Value="Transparent" />
                    <Setter Property="Foreground"
                        Value="Black" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <DockPanel>
        <TextBox DockPanel.Dock="Top"></TextBox>
        <DataGrid ItemsSource="{Binding}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="First Name" Binding="{Binding}" />
            </DataGrid.Columns>
        </DataGrid>
    </DockPanel>
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...