2

いくつかのレイヤーから論理的に構成されたグラフィカル指向の Windows-Store-App アプリケーションがあります。各レイヤーは、独自の種類のものを描画します。

いくつかの理由で、各レイヤーを WPF キャンバスとして表すことにしました。したがって、複数のキャンバスがすべて論理的に同じ領域を共有しています。キャンバスの非が他のキャンバスにネストされています。それらはすべて、グリッド オブジェクトのセルの下の「ドキュメント アウトライン」ツリーの同じレベルにあります。

入力イベントを 1 つの特定のキャンバスにのみルーティングしたいのですが、WPF にそれを行うように命令する方法がわかりません。すべての入力イベントは常に同じキャンバスに到達し、それは望ましいキャンバスではありません。

キャンバスの ZIndex プロパティと IsHitTestVisible プロパティを操作して目的の結果を達成しようとしましたが、アプリの動作に何かが変わるようには見えません。私が何をしても、イベントは常に同じ特定のキャンバスに到達します。

目的のキャンバスを他のすべてのキャンバスの上に配置しようとし、目的のないすべてのキャンバスのヒット テストをオフにしようとしました。これらのアクションはどれも成功しませんでした。

イベントを選択したキャンバスにルーティングするようにフレームワークに指示するにはどうすればよいですか?

4

1 に答える 1

1

それらはすべて同じ「レベル」にありますが、各キャンバスは他のキャンバスの上に描画されます。最後に描画されるものは、XAML ビューで一番下にリストされているものです。一番下にリストされているものは、入力をキャプチャするチャンスを持つ最初のものでもあります。ZIndex を変更すると、描画される順序が変更されますが、入力が処理される順序が変更されるとは思いません。

IsHitTestVisible プロパティを false に設定することで、入力を処理したくないものをすべて停止できるはずです。それがうまくいかなかった場合、どのイベントがまだ成功しているのか知りたいです。

于 2013-01-22T19:53:14.207 に答える