0

我正在编写一个应用程序,它基本上是一个非常类似于 Expression Blend 或 Visual Studio 设计器的设计器。所以基本上在设计表面上有一堆 UI 元素,你可以做一些事情,比如拖放、调整大小、旋转等。

将成为设计表面的主容器控件可以是从 Panel 派生的任何控件,其中包括 Canvas、Grid 等控件。这种情况意味着任何 Panel 派生控件作为设计表面的支持,在我需要的地方提出了一个问题找到一种通用方法来设置该表面上子控件的大小和位置,无论面板控件的 ptype 是什么。

我使用 UIElement.Arrange() 调用来移动/调整控件的大小,这很有效,但是一旦父面板控件的布局更新,例如当你调整它的大小时,我的所有更改都会重置为默认值。我也知道 WPF 面板控件中当前的 2 遍布局逻辑,但我无法从控件派生并用作背景对象。

所以简而言之,有没有一种通用的方法来实现我想要的,在面板派生控件中设置子控件的大小/位置,正如我所看到的 Blend/VS Designer 确实认识到如何在面板派生控件中定位控件?或者它们是否也针对已知的 Panel 派生控件进行了硬编码?

提前致谢...

厄兹登

4

2 回答 2

0

你不能这样做,不同面板类型的全部意义在于他们以不同的方式定位他们的孩子。

Canvas 专为手动控制大小和位置而设计,在 Grid 上您可以设置边距 - 但无法控制 StackPanel、WrapPanel 或 DockPanel(或您可以在几乎任何 WPF 示例集合中找到的径向面板)上的位置

于 2009-11-22T14:42:56.590 回答
0

您是否尝试过更改子控件的边距,这将让您更改它的位置。我不认为这是最好的方法,但它会起作用。

于 2009-09-30T21:41:22.200 回答