wpf - 为什么 AdornerLayers 总是最顶层?有没有办法改变它?

标签 wpf adorner visual-tree adornerlayer adornerdecorator

  • 为什么装饰层总是呈现为应用程序中的最顶层(在 AdornerDecorator 下 - 请参阅屏幕截图)?
  • 有没有办法更改可以绘制装饰器的图层/级别?

  • 在以下屏幕截图中,将 AdornerLayer 添加到 AdornerDecorator,并将 Adorner (MyAdorner) 添加到此 AdornerLayer。但是 AdornerLayer 是这样检索的,
            AdornerLayer layer1 = AdornerLayer.GetAdornerLayer(button1);
            layer1.Add(new MyAdorner(button1));
    

    AdornerLayer - Outline

    最佳答案

    回答我的第二个问题,

    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));
    

    Adorner Layer - Customized

    如果我错了,请纠正我。

    关于wpf - 为什么 AdornerLayers 总是最顶层?有没有办法改变它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209695/

    相关文章:

    wpf - 如何通过 AdornedElementPlaceholder 使用 TextTrimming 获取文本 block ?

    wpf - Caliburn.Micro 消息冒泡跳过控件

    c# - 为什么单击树抛出 'System.Windows.Documents.Run' 不是 Visual 或 Visual3D 的 InvalidOperationException?

    c# - XAML 按钮在消除引用后未被垃圾回收

    .net - 微软 Surface 平板电脑 : Writing Apps for Both Devices?

    c# - 从 AdornerLayout 或 Adorner 或装饰控件访问 AdornerPanel?

    wpf - 如何在 Visual Studio 2010 中为数值数组创建自定义图像装饰插件?

    c# - 如何从 CustomControl 内部找到 CustomControl 的父级

    c# - 项目控制 : Change Property Of Control in ItemControl Based On "Content" of Control

    wpf - 如何在 DataGrid 中的多个选定行上执行命令?