場景:我的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鍵的行爲?所以直到無效的行是固定的用戶不能編輯任何其他行..