能否清除装饰层?

9

我可能误解了WPF中adorner layers的概念,但我成功地将一个TextBlock添加到了StackPanel的adorner layer。

我该如何清除adorner layer?比如说,使StackPanel不再具有TextBlock在其adorner layer中?

2个回答

2

虽然这个问题比较老,但我最近遇到了同样的问题:

AdornerLayers 可以由多个 UI 元素共享。要访问任何 UI 元素(更具体地说,是任何可见元素)的 AdornerLayer,您可以调用静态方法 AdornerLayer.GetAdornerLayer(visual)。此方法遍历 VisualTree,在第一个 AdornerDecorator 中找到 AdornerLayer 并返回与该 UIElement 相关联的 AdornerLayer。然后您可以在该 AdornerLayer 中访问与 UI 元素相关的 Adorners。

以下是从 StackPanel 使用的 AdornerLayer 中删除与其相关的所有 Adorners 的代码:

var adornerLayer = AdornerLayer.GetAdornerLayer(yourStackPanel);
var adornersOfStackPanel = adornerLayer.GetAdorners(yourStackPanel);

foreach (var adorner in adornersOfStackPanel)
    adornerLayer.Remove(adorner);

-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接