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

时间:2011-05-24 15:01:02

标签: c# .net wpf adorner

我有一个由标签和文本框组成的usercontrol。它在滚动查看器中。

我正在绘制一个装饰器,我需要将装饰器的大小调整到控件的可见大小。

如何获得控件的可见尺寸?

在下面的图片中,绿色矩形是装饰品。正如您所看到的那样,它被绘制在右侧的滚动条上。

是否可以获得渲染部分的大小,或者我是否必须手动通过可视树并计算它?

修改:更多背景信息

我正在建立一个非常有限的表单设计师。一切都在代码中发生。装饰器用于显示当前选定的控件。

sample

2 个答案:

答案 0 :(得分:1)

我会在您的ScrollViewer中放置一个Canvas,并将所有用户控件放在Canvas上。如果然后在画布上绘制了Adorner,您不必担心它会覆盖ScrollViewer。

您还可以获得额外的好处,即装配工在ScrollViewer下消失,而不仅仅是结束,因此您的用户知道控件超出了ScrollViewer。这就是我在WPF中制作和看过的所有设计师的工作方式。

答案 1 :(得分:0)

如果您只是担心裁剪装饰,那么您可以在内容中加入AdornerDecorator。类似的东西:

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

或者您可以直接在UserControl中包含AdornerDecorator。