1

基本的に、DependencyProperty(FooProperty)に基づいて子を描画するパネルがあります。

FooPropertyがtrueの場合、子が配置されます。それ以外の場合は、配置されません。最初のパススルーは問題ありませんが、子がFooPropertyをtrue(描画)からfalse(描画しない)に変更すると、ArrangeOverrideメソッドはそれをスキップし、子は描画されたままになります。

描画されるべきではない子をスキップする代わりに、描画を解除する方法が必要だと思いますか?

4

1 に答える 1

5

子アイテムを「描画解除」しません。何かがArrangeOverrideパスをトリガーすると、計算を行って描画/再描画するだけです。

アイテムを「疑似スキップ」したい場合は、できません。描画したら、再描画する必要があります。ただし、Rect(0, 0) を使用して Point(0, 0) にいつでも描画できます。基本的に、あなたはそれを何も箱に入れていません。


では、アイテムを「本当に」アンドローする方法はありますか? はい、どうにかして InternalChildren のコレクションから削除してください。これを行うには、ビジュアル ツリーから項目を削除するか、パネルが ItemsSource のホスト パネルである場合は、ItemsSource コレクションからその項目を削除できます。

于 2011-06-20T18:45:49.337 に答える