首页 > 解决方案 > 设置 WPF DataGridCell ControlTemplate 后无法编辑

问题描述

我正在自定义 WPFDataGridCell样式,但是一旦我完成了这个双击编辑就不再起作用了。我也尝试手动调用myDataGrid.BeginEdit,但似乎没有任何反应。这是类似于我所拥有的代码:

<Style x:Key="MyCell" TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}">
    <Setter Property="Template">
         <Setter.Value>
             <ControlTemplate>
                 <Border>
                     <TextBlock />
                 </Border>
             </ControlTemplate>
         </Setter.Value>
    </Setter>
</Style>

我认为问题是因为我覆盖了 ControlTemplate,所以不再存在编辑器?如果是这种情况,他们是我可以使用默认编辑器对其进行排序的一种方式吗?

标签: c#wpfdatagriddatagridcell

解决方案


我正在使用一个子类TextBlock,它为内容字符串中的单个单词设置不同的前景色。如果不更换 ControlTemplate,我无法弄清楚如何做到这一点。

ControlTemplate您应该创建自定义列类型并覆盖该GenerateElement方法以返回自定义类型的实例,而不是创建自定义:

public class CustomColumn : DataGridTextColumn
{
    protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
    {
        return new YourCustomTextBlock();
    }
}

推荐阅读