代码之家  ›  专栏  ›  技术社区  ›  void.pointer

需要一种在WPF设计器中将文本框置于画布下的中心的方法

  •  1
  • void.pointer  · 技术社区  · 15 年前

    我刚开始在VS2008中使用WPF设计器,现在我对它知之甚少。我想通过实验来学习。

    以下是我的XAML(主要由vs生成):

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="478" />
            <RowDefinition Height="64*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="478" />
            <ColumnDefinition Width="140*" />
        </Grid.ColumnDefinitions>
        <Canvas Name="canvas1" Margin="0" />
        <TextBox Grid.Row="1" Grid.Column="0" Name="textBox1" HorizontalAlignment="Center" Width="120" VerticalAlignment="Top" Margin="0,5" Height="25" />
    </Grid>
    

    如你所见,我的画布在上面,文本框在下面。我希望文本框与画布的宽度水平居中。为了实现这一点,我将列的宽度设置为478,这是我希望画布的宽度。

    这是一种有效的方法吗?我自己不太喜欢这个解决方案,感觉应该有更好的方法。请记住,画布的“客户机rect”必须是478,这意味着稍后我可能需要在运行时调整画布的大小,以确保它是这样的大小。这种特殊的布局需要以这样的方式进行:如果画布的大小发生变化,文本框将正确地重新调整为水平位置,以保持画布下方的居中。

    其他人会怎么做?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Jay    15 年前

    您可以将画布和文本框包装在另一个容器中,如StackPanel。将容器的宽度设置为478,然后将画布和文本框设置为填充容器的宽度。

    推荐文章