Wpf DataGridCell.IsEditMode?
我如何知道DataGridCell当前是否处于编辑模式(不是IsSelected),我的意思是,例如,单击DataGridTextColumn单元格时,它会变成一个文本框而不是一个文本块,这就是我所说的IsEdit模式。 我想为这个模式设置一个触发器设置器 编辑: 我试图为DataGridCell.I编辑设置一个常规样式,但它似乎没有任何作用 以下是我当前代码的一个片段: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
<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>
然后根据需要设置文本框的样式我通过属性触发器设置的样式是什么意思。