装饰器未显示

5

我正在使用一个包含画布的用户控件。作为画布的子项,有一个带装饰器的内容控件。为什么装饰器不可见,可能是因为装饰器层没有被创建。所有东西都已经创建并附加。装饰器层在视觉树中非常高。装饰器层位于用户控件之外。

我知道它已经被创建了,因为我实现了基本的移动机制,但是装饰器从未显示过。

应该怎么做才能显示装饰器?


1
据我所见,从http://msdn.microsoft.com/en-us/library/ms743737.aspx中可以看出,装饰器通常是在方法重写OnRender内实现的。这是你正在做的吗? - Klaus78
1
是的,我找到原因了。当我将合并的资源字典添加到应用程序的MainWindow中,而不仅仅是添加到自定义用户控件的资源中,装饰器最终才会显示出来。 - Patrik
@patrik 我也遇到了同样的问题,请再详细解释一下... - J R B
我不知道你的应用程序架构是什么,但我成功地将整个资源字典移动到包含所有对象和装饰器的窗口中,并解决了可见性问题。以前,我的装饰器资源分配给了UserControl。当我将所有内容移动到更高层次(即窗口)时,我成功在屏幕上显示了装饰器。 - Patrik
1个回答

5

默认情况下,WPF窗口具有AdornerDecorator,但用户控件没有。因此,您只需在usercontrol.xaml中使用Adorner decorator包装您的Canvas:

<AdornerDecorator ClipToBounds="True">
            <Canvas x:Name="DesignerCanvas"
            ClipToBounds="True"
            SnapsToDevicePixels="True"/>
</AdornerDecorator>

更多信息: https://social.msdn.microsoft.com/Forums/vstudio/en-US/43a2565d-df21-4cf3-aa2a-240d67662945/please-help-me-resolve-a-mistery-with-resource-adorner-and-usercontrol-a-bug?forum=wpf
注:此链接涉及IT技术,讨论了关于资源装饰器和用户控件的一个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接