我有一个由标签和文本框组成的用户控件。它在滚动查看器中。
我在它上面画了一个装饰器,我需要将装饰器的大小调整为控件的可见大小。
如何获得控件的可见大小?
在下图中,绿色矩形是装饰器。如您所见,它被绘制在右侧的滚动条上。
是否可以获得渲染部分的大小,还是我必须手动通过可视化树并计算它?
编辑:更多背景信息
我正在构建一个非常有限的表单设计器。一切都在代码中发生。装饰器用于显示当前选定的控件。
我会在您的 ScrollViewer 中放置一个Canvas,并将您的所有用户控件放在 Canvas 上。如果随后将 Adorner 绘制在 Canvas 上,则不必担心它会在 ScrollViewer 上方绘制。
您还将获得装饰器在 ScrollViewer 下消失的额外好处,而不仅仅是在它处结束,因此您的用户知道控件超出了 ScrollViewer。这就是我在 WPF 中制作和看到的所有设计师的工作方式。
如果您只担心裁剪装饰器,则可以在您的内容中包含AdornerDecorator。就像是:
<ScrollViewer>
<AdornerDecorator>
<!-- Your content here -->
</AdornerDecorator>
</ScrollViewer>
或者您可以将 AdornerDecorator 直接包含在您的 UserControl 中。