如何获取WPF用户控件可见部分的大小?

3
我有一个用户控件,包含一个标签和一个文本框,并且它在一个滚动视图中。我正在控件的顶部绘制装饰器,需要调整装饰器的大小以适应控件的可见大小。如何获取控件的可见大小?在下面的图片中,绿色矩形是装饰器。正如您所看到的,它被绘制在右侧的滚动条上方。是否可以获取呈现部分的大小,还是必须手动遍历可视树并计算大小?编辑: 更多背景信息。我正在构建一个非常有限的表单设计器,在代码中执行所有操作。装饰器用于显示当前选定的控件。
2个回答

1

我建议在你的ScrollViewer中放置一个Canvas,并将所有用户控件放置在Canvas上。如果Adorner然后绘制在Canvas上,你就不必担心它会在ScrollViewer上方绘制。

你还可以获得额外的好处,即Adorner消失在ScrollViewer下面,而不仅仅是在其结束,这样你的用户就知道该控件扩展到了ScrollViewer之外。这是我在WPF中制作和看到的所有设计师都采用的方法。


谢谢,使用画布解决了我所有的问题 :) - monkey_p

0

如果您只关心修剪装饰器,那么您可以在内容中包含AdornerDecorator。例如:

<ScrollViewer>
    <AdornerDecorator>
        <!-- Your content here -->
    </AdornerDecorator>
</ScrollViewer>

或者你可以直接在你的用户控件中包含 AdornerDecorator。


抱歉,我已经添加了更多的背景信息。目前一切都在代码中发生。 - monkey_p

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