【发布时间】:2017-06-01 11:23:57
【问题描述】:
我的DataGrid 有几个DataGridTemplateColumn 是这样的:
<local:DataGridSyntaxColumn MinWidth="100" x:Name="cVariantNew1" Width="250">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<local:SyntaxTextBlock HorizontalAlignment="Left" SyntaxType="VARIANT" Value="{Binding Variants[0].Name, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Variants[0].Name, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Style="{StaticResource GridTextBox}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</local:DataGridSyntaxColumn>
DataGridSyntaxColumn 只是为了设置焦点:
public class DataGridSyntaxColumn : DataGridTemplateColumn
{
protected override object PrepareCellForEdit(FrameworkElement editingElement,
RoutedEventArgs editingEventArgs)
{
editingElement.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
return base.PrepareCellForEdit(editingElement, editingEventArgs);
}
}
这工作正常,但编辑模式不像通常的DataGridTextColumn
例如:
- 在
DataGridTextColumn中,双击会将光标设置到单击的位置,或者如果在空白处单击,则会选择单元格的全部内容 - 开始输入不进入编辑模式
有没有办法实现完全相同的行为?
【问题讨论】:
-
您是否尝试从 DataGridTextColumn 继承并简单地覆盖 GenerateElement 方法?
-
什么是 GenerateElement 方法?我需要 SyntaxTextBlock 来显示 SyntaxHighlighting
-
请参考我的回答。从 DataGridTextColumn 而不是 DataGridTemplateColumn 继承 DataGridSyntaxColumn 类。
标签: c# wpf datagrid datagridtemplatecolumn datagridtextcolumn