3

データグリッドを使用して、ユーザーが画像上に作成できる「選択長方形」の座標を表示します。

座標は他の目的にも必要であるため、データ グリッドのデータ バインディングを監視可能なコレクションに使用します。

そのため、ユーザーが新しい Rectangle を作成すると、Observable コレクションに新しいエントリが追加されます。

データグリッドに新しい四角形の座標を直接表示するには、「myDatagrid.Items.Refresh()」を呼び出す必要があります。

問題は、場合によってはプログラムが「無効な操作の例外」で失敗することです。これは、データグリッドで「AddNew または EditItem - トランザクション」が実行されている間は Refresh() を実行できないことを示しています。

このトランザクションがトリガーされる場所は正確にはわかりませんが、Refresh() が呼び出されたときに、現時点でデータグリッドの 1 つのセルで Mouse-Courser がアクティブであった場合にのみ例外が発生することがわかります。

したがって、本当に役立つヒントがいくつかあります。

  • データグリッドのすべてのセルの編集モードを「手動で」キャンセルするにはどうすればよいですか? (もちろん、私は DataGrid.CancelEdit() と DataGrid.CommitEdit() を試しましたが、それは役に立ちません)
  • EditItem-Transaction / AddItem-Transaction とは何ですか、または実行を停止するにはどうすればよいですか?
  • DataGrid.Refresh() を使用せずにバインディングを安全に更新するためのその他のアイデア。
4

0 に答える 0