我有一个主要由TemplateColumns组成的数据网格。我遇到的问题是,当通过行标签时,它似乎转到单元格,然后是单元格内的内容(即文本框或togglebutton)。理想的情况是,通过列的选项将重点放在内容上并跳过单元格。我可能正在解释发生的错误,但在视觉上似乎是这种情况。我试过了:
<DataGridTemplateColumn Header="Group Value"
MinWidth="30"
Width=".02*">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="IsTabStop"
Value="False" />
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding SomeBinding,
ValidatesOnDataErrors=True,
UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGrid}},
Path=DataContext.IsReadOnly}"
Style="{StaticResource TextBoxStyle}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
但这并不像我想象的那样有效。任何人都可以帮助我吗?
由于
答案 0 :(得分:2)
你是对的,它似乎专注于DataGridTemplateColumn
之前专注于标签内的控件。
在我寻找解决方案时,我遇到了这个问题: http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/
您可以将FocusAttacher
附加到模板列中的控件,它将从中窃取焦点。它对我很有用。
答案 1 :(得分:2)
我尝试了很多我在不同博客中找到的东西,但那些都不起作用。 但后来我发现了一种简单而有效的技术,就像冠军一样!
这只需要两个步骤。
<强> 1。在资源文件中添加样式:
<!-- Cell Editing For DataGrid-->
<Style x:Key="CellEditingStyle" TargetType="DataGridCell">
<Setter Property="IsTabStop" Value="False" />
</Style>
<强> 2。在数据网格中添加此样式:
<DataGridTemplateColumn Header="{DynamicResource grdLoadsPerMonths}"
CellStyle="{StaticResource CellEditingStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=LoadsPerMonth, UpdateSourceTrigger=LostFocus}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
就是这样。这解决了所有问题。没有更多的工作,不需要增加课程。