2011-02-02 93 views
1

2つのシナリオがあります。wpf datagridセルが編集モードにあるかどうかを確認するには?

  1. あなたが行を選択し、行を削除するには、キーを削除します押してください。

  2. セルを選択し、そのテキストが強調表示されているときに、削除キーを押してテキストを削除します。

どのように2つを区別しますか?どちらの場合も、私はPreviewKeyPressをキャッチし、キーはDeleteキーです、選択された行は同じです。

答えて

7

キー押下のソースを識別するため、PreviewKeyPress(..)e.OriginalSourceを捕捉しDataGridRow又はDatagridCellにキャストが成功したかどうかを確認。

DataGridは、IsReadOnlyプロパティを持っています。

+0

'{Binding Path = Something、Mode = TwoWay}'のようなものを使用していますか? –

+0

((System.Windows.RoutedEventArgs)(e))OriginalSourceはSystem.Windows.Controls.DataGridCellです。私がチェックしたものです。できます。それ以外の場合は、TextBox(DataGridTextColumnのアイテムレンダラー) – WhoIsNinja

+0

はい、Textboxはテンプレート化された列またはtextcolumnの場合に発生する可能性があります。それが助けてくれてうれしい。 –

0

DataGridCellIsEditing propertyを選択してください。私はあなたが行全体を選択した場合、選択されたセルが存在するか、選択されたセルでIsEditingがfalseになると仮定します(複数選択時にセルを編集できるとは思わないので)。

行を選択すると、最初の列のセルが自動的に選択され、編集モードになりますが、この方法は機能しません。

関連する問題