Wpf DataGridCell.IsEditMode?

Wpf DataGridCell.IsEditMode?,wpf,triggers,wpftoolkit,wpfdatagrid,setter,Wpf,Triggers,Wpftoolkit,Wpfdatagrid,Setter,我如何知道DataGridCell当前是否处于编辑模式(不是IsSelected),我的意思是,例如,单击DataGridTextColumn单元格时,它会变成一个文本框而不是一个文本块,这就是我所说的IsEdit模式。 我想为这个模式设置一个触发器设置器 编辑: 我试图为DataGridCell.I编辑设置一个常规样式,但它似乎没有任何作用 以下是我当前代码的一个片段: <Style TargetType="{x:Type tk:DataGridCell}"> <St

我如何知道DataGridCell当前是否处于编辑模式(不是IsSelected),我的意思是,例如,单击DataGridTextColumn单元格时,它会变成一个文本框而不是一个文本块,这就是我所说的IsEdit模式。 我想为这个模式设置一个触发器设置器

编辑: 我试图为DataGridCell.I编辑设置一个常规样式,但它似乎没有任何作用

以下是我当前代码的一个片段:

<Style TargetType="{x:Type tk:DataGridCell}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="{x:Null}"/>
        </Trigger>
        <Trigger Property="IsEditing" Value="True">
            <Setter Property="BorderBrush" Value="#FF62B6CC"/>
            <Setter Property="Background" Value="#FFF4F4F4"/>
        </Trigger>
    </Style.Triggers>
    <Setter Property="Foreground" Value="Black"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="BorderThickness" Value="0.5"/>
    <Setter Property="BorderBrush" Value="{x:Null}"/>
</Style>

谢谢。

若你们看了一下文件,那个么编辑应该是确定单元格是否处于编辑模式的好方法。但您不能从style设置此属性,因为DataGridCell类中有本地值赋值(style setter的优先级更高)

因此,答案是:它应该从触发器开始工作,但不会从样式设置器开始工作


更新:Shimmy,它确实有效。窥探应用程序,确保DataGridCell正在使用隐式样式。在树中选择DataGridCell,并检查其背景属性。每次进入编辑模式时,它都会更新。但默认情况下,您看不到它,因为TextBox不继承背景属性。但那是另一个故事。我认为您可以调整CellEditingTemplate使其工作。

打开编辑模式的正确方法是找到
DataGridCell
的父级
DataGrid
,然后调用
BeginEdit()
。如果直接设置,则会避开许多维护正确状态转换的
DataGrid
goo。

以下是如何做到这一点:

<Trigger Property="IsEditing" Value="True">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="DataGridCell">
                <TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text, Mode=TwoWay, UpdateSourceTrigger=Default}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Trigger>


然后根据需要设置文本框的样式

我通过属性触发器设置的样式是什么意思。