我可能误解了WPF中adorner图层的概念,但我设法将TextBlock
添加到StackPanel
的adorner图层。
我如何清除装饰图层?那么StackPanel
在其装饰层中不再有TextBlock
吗?
答案 0 :(得分:0)
否,您必须添加或删除附加图层
https://github.com/TheCamel/ArchX/blob/master/ArchX.Controls/Ruler/Ruler.cs
if (after)
layer.Add(GuideAdorner);
else
layer.Remove(GuideAdorner);
答案 1 :(得分:0)
老问题,但我遇到了同样的问题:
AdornerLayers 由多个 UIElement 共享。要访问任何 ui 元素(任何 Visual,更具体地说)的 AdornerLayer,您可以调用静态 AdornerLayer.GetAdornerLayer(visual)。此方法遍历 VisualTree,找到第一个 AdornerDecorator(一个容纳 AdornerLayer 的容器)并返回与 UIElement 关联的 AdornerLayer。然后,您可以访问该 AdornerLayer 中与 UIElement 相关的 Adorner。
以下是从 StackPanel 使用的 AdornerLayer 中删除与您的 StackPanel 相关的所有 Adorner 的代码:
var adornerLayer = AdornerLayer.GetAdornerLayer(yourStackPanel);
var adornersOfStackPanel = adornerLayer.GetAdorners(yourStackPanel);
foreach (var adorner in adornersOfStackPanel)
adornerLayer.Remove(adorner);