我有一个用户控件,包含一个标签和一个文本框,并且它在一个滚动视图中。我正在控件的顶部绘制装饰器,需要调整装饰器的大小以适应控件的可见大小。如何获取控件的可见大小?在下面的图片中,绿色矩形是装饰器。正如您所看到的,它被绘制在右侧的滚动条上方。是否可以获取呈现部分的大小,还是必须手动遍历可视树并计算大小?编辑: 更多背景信息。我正在构建一个非常有限的表单设计器,在代码中执行所有操作。装饰器用于显示当前选定的控件。
我建议在你的ScrollViewer中放置一个Canvas,并将所有用户控件放置在Canvas上。如果Adorner然后绘制在Canvas上,你就不必担心它会在ScrollViewer上方绘制。
你还可以获得额外的好处,即Adorner消失在ScrollViewer下面,而不仅仅是在其结束,这样你的用户就知道该控件扩展到了ScrollViewer之外。这是我在WPF中制作和看到的所有设计师都采用的方法。
如果您只关心修剪装饰器,那么您可以在内容中包含AdornerDecorator。例如:
<ScrollViewer>
<AdornerDecorator>
<!-- Your content here -->
</AdornerDecorator>
</ScrollViewer>
或者你可以直接在你的用户控件中包含 AdornerDecorator。