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