|
分類:[.NET 全般]
VisualStudio 2010 C# 使用です。
WPFのDataGridであるセルの検証がOKになるまで、そのセルを編集状態にしたままカーソルを移動させない方法を教えてください。
DataGridのCellEditEndingイベントで、検証エラーの場合に DataGridCellEditEndingEventArgs.Cancel=true を設定したのですが、[Enter]を押した場合はうまく動作するのですが、[Tab]やマウスで他のセルをクリックした場合は、フォーカスが移動してしまいます。
初心者のため、根本的にやり方が間違っているのかもしれませんが、以下はうまくいっていないコードです。
private void dataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { // UpdateSourceTriggerをLostFocusにすると[Enter]では検証の前にここにきてしまうので、Explicitを指定してここでUpdate (e.EditingElement.GetBindingExpression(TextBox.TextProperty) as BindingExpression).UpdateSource();
if (Validation.GetHasError(e.EditingElement)) { // TextBlockにエラーを表示 // xamlでのTextBlock Bindingの書き方がわからない為ここで設定 errTextBlock.Text = Validation.GetErrors(e.EditingElement)[0].ErrorContent.ToString(); e.Cancel = true; } else { errTextBlock.Text = null; } }
どうぞよろしくお願いします。
|