2011-10-08 91 views
0

我有一个WPF DataGrid,我需要在DataGrid中选择一些行。完成选择后,蓝色高线仍然在行上,我无法弄清楚如何摆脱它。我尝试点击其他地方,但蓝色的高线仍然在行。如何取消高线WPF DataGrid行?

enter image description here

+0

是否要永久删除蓝色突出显示的边框? –

+0

@ RV1987我只是不希望它成为高线。例如。第三行是高线,但我希望它不像其他行一样高。我应该在哪里点击删除highline? – KMC

回答

0

虽然我不知道你想做什么,你可以控制与重新定义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> 
1

可以处理该事件中隐藏文件代码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>