锚定WPF控件以在表单大小调整上保持位置

时间:2012-09-12 18:52:57

标签: wpf

所有的窗口控件都有一个名为anchor的属性,通过它我可以强制控制粘在它的表面上,如果有人重新调整大小形成控件的高度&宽度也增加&与表格大小一起减少。

我问了一个人如何在wpf中这样做,他说如下 WPF中的“停靠”可以通过设置子控件的Horizo​​ntalAllignment和VerticalAllignment属性来完成。

WPF中的“锚定”可以通过在子容器上设置边距和/或在容器上设置填充来完成。

不幸的是我无法这样做。所以这是我的样本xaml。

<Window x:Class="WpfApplication1.Window3"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window3" Height="300" Width="515">
<Grid>
    <Label Name="lblName" Content="Enter Name" Height="28" HorizontalAlignment="Left" Margin="-17,5,0,0"  VerticalAlignment="Top" />
    <Label Content="Enter Address" Height="28" HorizontalAlignment="Left" Margin="-17,39,0,0" Name="label2" VerticalAlignment="Top" />
    <Label Content="Enter Company" Height="28" HorizontalAlignment="Left" Margin="-17,68,0,0" Name="label3" VerticalAlignment="Top" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="83,10,0,0" Name="textBox1" VerticalAlignment="Top" Width="222" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="83,73,0,0" Name="textBox2" VerticalAlignment="Top" Width="222" />
    <TextBox Height="23" HorizontalAlignment="Left" Margin="83,42,0,0" Name="textBox3" VerticalAlignment="Top" Width="222" />
</Grid>
</Window>

所以请编辑ny xaml以实现我想要的......谢谢

2 个答案:

答案 0 :(得分:1)

我不会为你编写代码,但我会告诉你需要做些什么来学习如何正确编码。

首先,你应该学习what layout controls WPF has。我实际上建议阅读this code project article,其中包括每个布局控件的快速直观表示以及它们的工作方式。

您当前的XAML正在错误地使用Grid控件以及当前控件的设置方式,您也可以使用Canvas,它用于静态布局。

如果您通过定义GridRowDefinitions正确使用ColumnDefinitions控件,并将控件分配给特定Grid.RowGrid.Column,我会得到你想要的。 :)

答案 1 :(得分:0)

这是另一种方法。它会给你静态布局:

<Grid>
     <Grid.RowDefinitions>
 <RowDefinition Height="auto"/>
  <RowDefinition Height="auto"/>
  <RowDefinition Height="auto"/>
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
  <ColumnDefinition Width="auto"/>
  <ColumnDefinition Width="auto"/>
  </Grid.ColumnDefinitions>

  <Label Grid.Column="0" Grid.Row="0" Name="lblName" Content="Enter Name"/>     
  <Label Grid.Column="0" Grid.Row="1" Content="Enter Address" />     
  <Label Grid.Column="0" Grid.Row="2" Content="Enter Company" />     
  <TextBox Grid.Column="1" Grid.Row="0" Width="200"/>     
  <TextBox Grid.Column="1" Grid.Row="1" Width="200" />     
  <TextBox Grid.Column="1" Grid.Row="2" Width="200"/> 
</Grid>