锚定WPF控件以在窗体上粘贴位置调整大小

锚定WPF控件以在窗体上粘贴位置调整大小,wpf,Wpf,所有窗口控件都有一个名为anchor的属性,通过该属性,我可以强制控件粘贴在其表面上,如果有人重新调整窗体的大小,控件的高度和宽度也会随着窗体的大小而增减 我问了一些人如何在wpf中做到这一点,他说如下 WPF中的“停靠”可以通过设置子控件的HorizontalAllignment和VerticalAllignment属性来完成 WPF中的“锚定”可以通过设置子容器上的边距和/或容器上的填充来完成 不幸的是,我不能这样做。这是我的示例xaml <Window x:Class="WpfApp

所有窗口控件都有一个名为anchor的属性,通过该属性,我可以强制控件粘贴在其表面上,如果有人重新调整窗体的大小,控件的高度和宽度也会随着窗体的大小而增减

我问了一些人如何在wpf中做到这一点,他说如下 WPF中的“停靠”可以通过设置子控件的HorizontalAllignment和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以实现我的目标……谢谢,我不会为您编写代码,但我会告诉您需要做什么来学习如何正确编写代码

首先,你应该学习。实际上,我建议通读,其中包括每个布局控件及其工作方式的快速视觉表示

当前XAML不正确地使用了
网格
控件,按照当前控件的设置方式,您最好使用用于静态布局的
画布


如果要通过定义
行定义
列定义
并将控件指定给特定的
网格.Row
网格.Column
来正确使用
控件,您将得到所需的结果。:)

这里有另一种方法。它将为您提供静态布局:

<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>


它是什么?我问了不同的问题。当窗口重新调整大小时,控件也会按比例重新调整大小。@Thomas这应该将控件“锚定”到左上角,并且当窗口大小更改时,它们不应该调整大小。如果你不明白这一点,或者我误解了这个问题,请告诉我。大爸爸回答,他同时设置了RowDefinitions和ColumnDefinitions,但它仍然没有按照我所期望的方式工作。@Thomas删除了
宽度
/
高度
属性,这样它就可以根据网格单元的大小进行拉伸。如果要在控件之间留出一些空间,可以保留
Margin
属性,或者使用额外的行或列定义来在控件之间留出空间。