3

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

我在它上面画了一个装饰器,我需要将装饰器的大小调整为控件的可见大小。

如何获得控件的可见大小?

在下图中,绿色矩形是装饰器。如您所见,它被绘制在右侧的滚动条上。

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

编辑:更多背景信息

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

样本

4

2 回答 2

1

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

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

于 2011-05-24T15:44:58.273 回答
0

如果您只担心裁剪装饰器,则可以在您的内容中包含AdornerDecorator。就像是:

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

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

于 2011-05-24T15:05:58.013 回答