3

ユーザーがデータグリッドの行を選択し、[記録の開始]ボタンをクリックするプログラムがあります。「記録」が行われている間、データグリッドで選択された値を変更することは許可されていないため、IsEnabledをfalseに設定しました。ただし、データグリッドが無効に設定されている場合、選択された行の選択が解除され、データグリッドのSelectedItemプロパティへのバインディングが台無しになります。

コントロールが無効になっている場合でも、データグリッド行を選択したままにする方法はありますか?

編集:これはWindows Vistaでは発生しませんが、Windows7では発生します。

4

3 に答える 3

0

アクションを「記録」したいが、ビジュアルとインタラクションを同じように保ちたい場合は、選択時に発生するイベントにチェックを追加して、記録が行われていないことを確認し、e.Handled=trueに設定してみませんか。

または、IsHitTestVisible = falseを設定して、コントロールを完全に無効にするのではなく、コントロールでアクションを実行しないようにすることもできます。

お役に立てば幸いです。

于 2010-03-09T22:35:37.520 に答える
0

申し訳ありませんが、この投稿は少し古いことは知っていますが、他の場所でこれに対する別の解決策を見つけることができませんでした。

Vista \ 7とは関係がないようですが、Toolkitの2月のリリースと関係があります。

Jeff Wainが示唆するように、IsHitTestVisible = falseを設定できますが、Mikeが指摘したように、違いはないように見えます。また、キーボード入力を無効にすることはありません。

私の解決策は、DataGridを半透明の灰色の長方形と同じ行と列内のグリッドに配置することです(これにより、それらが互いに重なり合うようになります)。長方形をグリッドの2番目に配置して、DataGridの上にあることを確認する必要があります。「無効にする」場合は、長方形を表示します。これにより、リストが淡色表示になり、マウス入力が無効になりますが、キーボード入力は無効になりません。

キーボードを無効にするには、「PreviewKeyDown」をインターセプトしてe.Handdled=trueに設定する必要があります。これにより、他に何も選択できなくなりますが、タブで移動すると、いくつかの興味深いことが行われます(タブが機能しなくなったなど)。おそらく、タブストップではなく、フォーカスできないように設定することでもこれを修正できますが、選択を無効にすることだけが私が本当に気にかけていることです。

于 2010-04-29T14:38:04.803 に答える
0

IsHitTestVisible = falseは、マウス入力を無効にします。

キーボード入力を無効にするには、Focusable=falseを設定します。

子コントロール(テキストボックス、チェックボックスなど)が入力を受け入れないようにするには、両方をElementStyleまたはElementEditingStyleのスタイルを介して、組み込みのデータグリッド列に設定する必要があります。

ほとんどの場合、スタイルでトリガーを使用し、それをIsRecording値にバインドする必要があります。

また、同じスタイルで、不透明度= 0.4に設定することで、「無効」コントロールの外観を変更できます。これにより、コントロールに多少の無効感が与えられます。

于 2010-07-21T19:10:46.957 に答える