在以下屏幕截图中,将 AdornerLayer 添加到 AdornerDecorator,并将 Adorner (MyAdorner) 添加到此 AdornerLayer。但是 AdornerLayer 是这样检索的,
AdornerLayer layer1 = AdornerLayer.GetAdornerLayer(button1);
layer1.Add(new MyAdorner(button1));
最佳答案
回答我的第二个问题,
Is there a way to change the layer/level on to which the adorners can be drawn?
我想我已经找到了解决方案。只需在需要渲染装饰器的关卡周围放置一个 AdornerDecorator 元素。任何需要装饰器层的控件都将使用此 AdornerDecorator 元素来放置其装饰器。
在这里,我使用以下代码片段将装饰器移到了不同的级别。
<Window x:Class="CustomAdornerLayer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<Grid>
<StackPanel Background="Yellow" Width="Auto">
<Button>Button3</Button>
</StackPanel>
<AdornerDecorator>
<Grid>
<AdornerDecorator>
<Button x:Name="button1" Margin="70,73,265,158">Button1</Button>
</AdornerDecorator>
<AdornerDecorator>
<Button x:Name="button2" Margin="87,51,248,180">Button2</Button>
</AdornerDecorator>
</Grid>
</AdornerDecorator>
</Grid>
虽然 AdornerLayer 仍然以同样的方式查询,
AdornerLayer layer1 = AdornerLayer.GetAdornerLayer(button1);
layer1.Add(new MyAdorner(button1));
AdornerLayer layer2 = AdornerLayer.GetAdornerLayer(button2);
layer2.Add(new MyAdorner(button2));
如果我错了,请纠正我。
关于wpf - 为什么 AdornerLayers 总是最顶层?有没有办法改变它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209695/