如何在WPF中相对定位元素?
标准模型是使用布局管理器来完成所有操作,但如果您只想基于其他元素的位置(例如在Canvas上)定位元素,应该怎么办?
在某些情况下,强制将所有内容都放入布局管理器(不同的WPF面板)并不是很合理,特别是当您不关心元素是否由某个父容器维护,并且您不希望其他子元素受到彼此布局/外观变化的影响时。WPF是否以任何方式支持此相对定位模型?
如何在WPF中相对定位元素?
标准模型是使用布局管理器来完成所有操作,但如果您只想基于其他元素的位置(例如在Canvas上)定位元素,应该怎么办?
不要像你的示例那样直接在画布上放置按钮,而是可以在画布上放置一个水平对齐的堆栈面板,并将两个按钮放入其中。
就像这样:
<Canvas>
<StackPanel Canvas.Left="100" Canvas.Top="100" Orientation="Horizontal">
<Button>Button 1</Button><Button>Button 2</Button>
</StackPanel>
</Canvas>
我认为当你在一个表单中使用多个布局时,它是非常灵活的,你可以创建几乎任何你想要的配置。
好问题。据我所知,我们需要有一个不同的自定义面板才能获得此功能。由于WPF是基于视觉层次结构的,因此在平台上没有办法对元素进行此类平面结构。
但是这里有一个技巧可以实现。将您的元素放置在相同位置,并使用RenderTransform.TranslateTransform给予相对位移。这样,您的TranslateTransform的X和Y将始终与其他元素相关。
Grid
。 - Gusdor