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 回答