我有WPF的数据网格。我已经改变了我的聚焦控制键盘,使得像Tab一样输入,这样我就可以通过Enter轻松改变焦点。
我使用了这段代码
public static void PreviewKeyDown(object sender, KeyEventArgs e)
{
//ganti enter dengan tab
if (e.Key == Key.Enter)
{
if (Keyboard.FocusedElement is FrameworkElement)
{
e.Handled = true;
(Keyboard.FocusedElement as FrameworkElement).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
}
在mainwindow.xaml.cs中我使用了这段代码
this.PreviewKeyDown += Tools.ToolsKeyboard.PreviewKeyDown;
但是当我在datagrid中使用时,当前焦点控制的焦点颜色不会像这张图片那样改变:
wpf focus http://i62.tinypic.com/9787qo.jpg
如何在第一次加载时使丢失的焦点控制变为正常?
更新
这是我的数据网格样式
<DataGrid.Resources>
<Style BasedOn="{StaticResource {x:Type DataGridCell}}"
TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="#CCDAFF" />
<Setter Property="Foreground" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGrid.Resources>