WPF中的控件定位

来源:互联网 发布:济宁行知中学 编辑:程序博客网 时间:2024/05/21 09:55

 以下代码实现了手工实现了子控件相对父容器的位置居中:

 xaml内容如下, 

  <Grid Name="grid_one"   Background="#FFF27F7F">        <Canvas Height="164" HorizontalAlignment="Left" Margin="178,131,0,0" Name="canvas1" VerticalAlignment="Top" Width="281" Background="Black" />        <Button Content="定位" Height="40" HorizontalAlignment="Left" Margin="165,22,0,0" Name="button1" VerticalAlignment="Top" Width="68" Click="button1_Click" />        <TextBox Height="23" HorizontalAlignment="Left" Margin="24,22,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="长" />        <TextBox Height="23" HorizontalAlignment="Left" Margin="24,68,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="宽" />    </Grid>

 

button的click事件代码如下:

int wid = Convert.ToInt32(textBox1.Text.Trim());            int hei = Convert.ToInt32(textBox2.Text.Trim());            canvas1.Width = wid;            canvas1.Height = hei;            Thickness thi = new Thickness((grid_one.ActualWidth - wid) / 2, (grid_one.ActualHeight - hei) / 2, 0, 0);            canvas1.Margin = thi;

特别注意:
1.在wpf中,某些未初始化 width,height的元素,最好使用ActualWidth、ActualHeight获取其宽度和高度。

2.另外,使用thickness 定位时,一定设置子控件的两个定位属性:  HorizontalAlignment="Left"      VerticalAlignment="Top"