gpt4 book ai didi

wpf - WPF装饰器层什么时候首次可用?

转载 作者:行者123 更新时间:2023-12-04 03:13:50 24 4
gpt4 key购买 nike

我试图将叠加效果添加到我的UserControl中,并且我知道这就是WPF中使用的装饰器。但是我对它们应该如何工作有些困惑。我认为装饰层是由WPF运行时隐式处理的,因此应始终可用。

但是,当我在代码中创建UserControl实例时,那里没有装饰层。以下代码因异常而失败:

var view = new MyUserControl();
var target = view.GetAdornerTarget(); // This returns a specific UI control.
var layer = AdornerLayer.GetAdornerLayer(target);
if (layer == null)
{
throw new Exception("No adorner layer at the moment.");
}

有人可以告诉我,这应该如何工作吗?我是否需要先将UserControl实例放置到顶级Window中?还是我需要自己定义图层?浏览文档无处可寻。

谢谢!

最佳答案

AdornerLayerAdornerDecoratorScrollContentPresenter类生成。如果视觉树中没有这两个类作为控件的父项,则它将没有关联的AdornerLayer

您可以在AdornerDecorator中添加UserControl,但这将确保Adorners仅位于UserControl的后代控件之上。

Window的默认ControlTemplate包含AdornerDecorator,因此,如果将UserControl添加到Window中,则它应该获得AdornerLayer

关于wpf - WPF装饰器层什么时候首次可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2652299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com