我正在尝试向我的 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 吗?还是我需要以某种方式自己定义图层?翻阅文档让我无处可去。
谢谢!