RadTreeView
拡張 (継承) したいTelerik の (Silverlight バージョン) コントロールがあります。新しいコントロールを呼び出しましょうMyTreeView
。
私が達成したいのは、アイテムがチェックインされるとMyTreeView
、そのすべての子アイテムが自動的にチェックされることです。また、ノードをチェックした後、その親がすべての子をチェックしている場合は、親もチェックしたいと思います。これは、ツリー全体をルートまで再帰的に移動します。デフォルトでは、この機能を見つけることができないようです。
アイテムをチェックする再帰アルゴリズムのソリューションは必要ありません。自分で簡単に管理できます。私が問題として見ているのは、ユーザーがChecked
およびUnchecked
イベントをサブスクライブできるという事実です。したがって、ユーザーがChecked
イベントをサブスクライブしている場合、項目がチェックされるたびにそのすべての子がチェックされるため、親をチェックした結果として自動的にチェックされた子ノードごとにイベントが発生します。私のシナリオでは、これは望ましい動作ではありません。結果として自動的にチェックされる他のノードではなく、手動でチェックされたアイテムに対してのみイベントを発生させたいです。
メソッドをオーバーライドできると思ったのOnChecked
ですが、プライベートであるか、そのようなメソッドがないため、アクセスできません。コンストラクター内のイベントに別のイベント ハンドラーを追加することもできChecked
ます。これは、イベントをサブスクライブする他のイベント ハンドラーの前に呼び出されますが、子ノードがイベントを発生させることは妨げられません。Checked
一時的にハンドラーのサブスクライブを解除し、ノードを確認した後に再度サブスクライブできるようにしたいと考えています。しかし、誰がイベントを購読しているのか分からないので、手動で購読を解除することはできず (イベントは公開されています)、呼び出しリストを取得することもできないようです。
サブスクライブされたイベントを反復処理する方法や、それらを一時的にオフにする他の方法はありますか? 説明されている問題に対するより良いアプローチはありますか?