DataGridでの検証に関して問題が発生しています。モデルクラスでIDataErrorInfo検証を使用しています。
問題は、別々のCellTemplateとCellEditingTemplateを持つ編集可能なDataGridにあります(注はnullではないプロパティです-検証はnullまたは空の場合にエラーを返します):
<!-- some other validated columns -->
<DataGridTemplateColumn Header="Note">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Name="textBoxNote" Text="{Binding Note, ValidatesOnDataErrors=True}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Note}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
[保存]ボタンで、MyObject.Error検証プロパティを確認し、nullでない場合は、MessageBoxを表示します。問題は、最初の列(注1ではない)を有効な値に変更してから[保存]ボタンをクリックすると、.Errorプロパティがnullになることです。これは、(不要ではありますが)予期される動作です。 (TextBoxコントロールは存在しませんでした!)。しかし、TextBlockでValidatesOnDataErrorsをtrueに設定すると、DataGridに表示されている(たとえばデータベースからの)すべてのオブジェクトで、気にしない不要な検証が行われます。この場合、検証にも多くの時間がかかる可能性があります...
この問題を処理する適切な方法は何でしょうか?モデルクラスで検証を維持したいと思います(オブジェクトは、それが有効かどうかを認識している必要があります)。コードビハインド([保存]ボタンイベント)で行にバインドされたオブジェクトの検証を強制する方法はありますか?または、どういうわけかオブジェクト構築の.Errorを初期化する必要がありますか?他のアイデアはありますか?
編集: 行全体(すべてのセル)を編集モード(CellEditingTemplate)にするにはどうすればよいですか?次に、すべてのコントロールがロードされ、データバインドされます。これは、検証済みも意味します...
みんなのおかげで、DB