2009-09-30 16 views
0

我在写一个基本上是类似于Expression Blend或Visual Studio设计器的设计器的应用程序。因此,基本上在设计表面上有一堆UI元素,您可以执行诸如拖放,调整大小,旋转等操作。设置元素边界的一般方法

主容器控件将作为设计表面,可以是任何控件它来源于Panel,其中包括诸如Canvas,Grid等控件。这个定位意味着任何面板派生控件作为设计界面的支持,这就产生了一个问题,我需要找到一种常用的方法来设置子控件的大小和布局该表面无论面板控制的类型是什么。

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

简而言之,是否有一种通用的方法来实现我想要的功能,在面板派生控件中设置子控件的大小/位置,正如我所见Blend/VS Designer确实知道如何将面板中的控件定位控制?或者它们是否也已知面板派生控件的硬编码?

在此先感谢...

Özden

回答

0

你有没有试图改变你的孩子控制的保证金,这将让你改变它的位置。我不认为这是实现它的最佳方式,但它会起作用。

+0

感谢您的回应... 对于网格控件,如您所说使用了页边距。但是,例如,当您在Blend中使用Canvas时,它会改为设置Canvas.Left属性。我只想了解是否有一种常用的方法来了解父母的能力并为定位设置正确的属性。 到目前为止,我所有的研究都发现这是不可能的,也许blend/VS也会对此进行硬编码。也许我应该使用TranslateTransform,这是我在所有可能的场景中共同发现的唯一的东西。 – 2009-09-30 22:18:50

0

你不能做到这一点,不同面板类型的整点id,他们不同地定位他们的孩子。

画布是为手动控制大小和位置而设计的,在网格上可以设置边距 - 但无法控制StackPanel,WrapPanel或DockPanel上的位置(或者可以在几乎所有WPF样本中找到的辐射面板收集)