WPF xaml中的相对定位

6

在XAML定义中,是否可以相对于另一个控件定位控件?例如,如果我想将一个控件放置在另一个更宽的控件的正中间,该怎么办呢?


首先,您尝试过在内部控件中使用HorizontalAlignment="Center"吗? - Xcalibur37
将控件居中只是一个示例。我正在寻找更一般的东西 :) - Idov
1个回答

8
如果您想将控件居中,可以将它们包裹在一个网格中:
<Grid>
    <TextBox Height="132"   Width="229" VerticalAlignment="Center" HorizontalAlignment="Center" />
    <Button Content="Button" Height="23" Width="75" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>

其他的定位方式可以通过其他面板(例如StackPanel等)完成,但Grid是最灵活的选择。

编辑:使用网格和列来控制位置进行更新:

<Grid Height="50" Width="200">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="50*" />
        <ColumnDefinition Width="20*" />
        <ColumnDefinition Width="75*" />
    </Grid.ColumnDefinitions>
    <TextBox Grid.Column="0" Background="Red" />
    <Button Content="Button"  Grid.Column="2"   />
</Grid>

好的,但居中控件只是一个例子。如果我想让一个控件在另一个控件之后20个单位开始呢? - Idov
我只是随意输入了一些数字。你应该可以通过调整宽度、高度、列和行跨度来获得所需的定位。 - Johan Larsson
所以所有的操作都是通过面板完成的吗?控件不能使用彼此的属性,比如宽度或高度吗? - Idov
控制子元素的位置是面板的目的。如果你问我,这实际上是相当不错的面向对象编程。http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.aspx - Johan Larsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接