WPF中的问题';s数据网格验证-MVVM

WPF中的问题';s数据网格验证-MVVM,wpf,mvvm,datagrid,validation,Wpf,Mvvm,Datagrid,Validation,场景:我的视图中有一个DataGrid(只有一列)。我已经在XAML中对DataGrid应用了RowValidationRule。每当用户将DataGridCell留空时,我的验证规则就会触发一个错误,用户可以看到行周围的红色边界和解释错误的工具提示。DataGrid的默认行为不允许用户更改任何其他单元格,直到用户修复此当前无效单元格。但如果用户单击无效单元格并按Escape键,红色错误消息将消失,用户可以更改任何其他记录。escape键的作用是将最后一个有效值放入单元格 我正在使用这个XAML

场景:我的视图中有一个DataGrid(只有一列)。我已经在XAML中对DataGrid应用了RowValidationRule。每当用户将DataGridCell留空时,我的验证规则就会触发一个错误,用户可以看到行周围的红色边界和解释错误的工具提示。DataGrid的默认行为不允许用户更改任何其他单元格,直到用户修复此当前无效单元格。但如果用户单击无效单元格并按Escape键,红色错误消息将消失,用户可以更改任何其他记录。escape键的作用是将最后一个有效值放入单元格

我正在使用这个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键时,该单元格将变为有效(使用以前的值),但直到用户单击以前无效的单元格,即直到单元格样式更改为Textbox,以前的值才会出现。换句话说,如果用户按Escape键并恢复上一个值,则TextBlock不会显示上一个值,直到用户再次单击单元格并尝试编辑该值

那么,在按下escape键后,是否有任何方法可以强制Textblock显示值,而无需先进入Textbox模式


如果上面的事情是不可能的,有没有任何方法,我可以停止转义键的行为?因此,在修复无效行之前,用户无法编辑任何其他行。

我将UpdateSourceTrigger更改为explicit,解决了此问题

     <DataTemplate>
          <TextBox Text="{Binding Type, UpdateSourceTrigger=Explicit}"/>
     </DataTemplate>

我将UpdateSourceTrigger更改为explicit,解决了这个问题

     <DataTemplate>
          <TextBox Text="{Binding Type, UpdateSourceTrigger=Explicit}"/>
     </DataTemplate>