C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

WPF DataGridで検証エラー時に編集終了をキャンセル


(過去ログ 97 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■57897 / inTopicNo.1)  WPF DataGridで検証エラー時に編集終了をキャンセル
  
□投稿者/ Hiro (1回)-(2011/03/21(Mon) 12:08:49)

分類:[.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;
}
}


どうぞよろしくお願いします。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -