【发布时间】:2010-12-02 17:30:47
【问题描述】:
我正在编写一个应用程序,它基本上是一个非常类似于 Expression Blend 或 Visual Studio 设计器的设计器。所以基本上在设计表面上有一堆 UI 元素,你可以做诸如拖放、调整大小、旋转等操作。
主容器控件,即设计表面可以是任何从 Panel 派生的控件,包括 Canvas、Grid 等控件。这种情况意味着支持任何 Panel 派生控件作为设计表面,这会引发问题无论面板控件的 ptype 是什么,我都需要找到一种通用方法来设置该表面上子控件的大小和位置。
我使用 UIElement.Arrange() 调用来移动/调整控件的大小,这很有效,但是一旦父面板控件的布局更新,例如当您调整它的大小时,我的所有更改都会重置为默认值。我也知道 WPF 面板控件中当前的 2 遍布局逻辑,但我无法从控件派生并用作背景对象。
简而言之,有没有一种通用的方法来实现我想要的,在面板派生控件中设置子控件的大小/位置,正如我所见,Blend/VS Designer 确实认识到如何在面板派生控件中定位控件?或者它们是否也针对已知的 Panel 派生控件进行了硬编码?
提前谢谢...
奥兹登
【问题讨论】:
标签: wpf layout drag-and-drop panel