我怎么知道DataGridCell当前是否处于编辑模式(而不是IsSelected),我的意思是,例如,单击DataGridTextColumn单元格,它就变成了TextBox而不是TextBlock,这就是我所说的IsEditMode。我想为这个模式设置一个触发装置。
编辑:,我试图为DataGridCell.IsEditing设置一个通用样式,但它似乎什么也不做。
下面是我当前代码的一个片段:
<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>谢谢。
发布于 2009-12-28 12:28:14
如果您查看DataGridCell.cs文件,IsEditing应该是查看单元格是否处于编辑模式的好方法。但是您不能从样式中设置这个属性,因为DataGridCell类中有本地值赋值(样式设置器具有更高的优先级)。
因此,答案是:它应该从触发器中工作,但它不会从样式设置器。
更新: Shimmy,它真的很有效。搜索应用程序,确保DataGridCell使用您的隐式样式。在树中选择DataGridCell,并检查其背景属性。每次你进入编辑模式,它都会被更新。但默认情况下,您没有看到它,因为TextBox不继承后台属性。但那是另一个故事。我认为你可以调整CellEditingTemplate使它工作。
发布于 2011-04-06 06:46:07
以下是如何做到这一点:
<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>然后按您喜欢的方式设置文本框的样式。
发布于 2011-02-09 17:50:49
打开编辑模式的正确方法是找到DataGridCell的父DataGrid并在它上调用BeginEdit(),如果直接设置它,就会避开许多维护正确状态转换的DataGrid goo。
https://stackoverflow.com/questions/1966125
复制相似问题