场景:我的View中有一个DataGrid(只有一列)。我在XAML的DataGrid上应用了RowValidationRule。每当用户将DataGridCell留空时,我的验证规则会触发错误,用户可以看到该行周围的红色边界以及解释错误的工具提示。 DataGrid的默认行为不允许用户更改任何其他单元格,直到用户修复此当前无效单元格为止。但是,如果用户点击无效单元并按Esc键,则红色错误消息将消失,用户可以更改任何其他记录。什么逃生关键是它将最后一个有效值放到单元格中。WPF的DataGrid验证问题 - MVVM
我用这XAML创建列
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Type, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Type, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
问题:当用户按Escape键上无效的单元格键,电池有效(使用前值),但直到用户点击以前的值永远不会出现以前无效的单元格,即直到单元格样式更改为文本框。换句话说,如果用户按Esc键,TextBlock从不显示以前的值,并恢复先前的值,直到用户再次单击单元格并尝试编辑该值。
那么有没有什么办法可以强制Textblock在没有先进入文本框模式的情况下按下快速键后显示值?
如果上面的东西是不可能的,有没有什么办法可以阻止Escape键的行为?所以直到无效的行是固定的用户不能编辑任何其他行..