Canvas.Top和Canvas.Left属性

Canvas控件提供一个画面用于在画布的特定坐标处显示子元素,属于绝对定位,相当于html中的div,Canvas.Top和Canvas.Left属性只有Canvas控件的子元素(并且是这个子元素紧挨着Canvas)用时才有效果,如下代码

      <Canvas Background="Red" >
                      <Rectangle Fill="Green" Width="100" Height="100" Canvas.Top="20" Canvas.Left="20" > </Rectangle>
        </Canvas>

运行的效果是


而如果父控件换成StackPanel

      <StackPanel Background="Red" >
                      <Rectangle Fill="Green" Width="100" Height="100" Canvas.Top="20" Canvas.Left="20" > </Rectangle>
        </StackPanel>

运行的效果如下


可以看出和第一次是不一样的效果,矩形跑到顶部中间去了,Canvas.Top和Canvas.Left并没有起作用

如果父控件换成Grid后运行的效果如下


矩形跑的页面的中心了,可以看出Grid表格布局特点,如果没有指定行列,默认是放到中间的有多个元素的会重叠的。

如图


以上只是本人做个简单例子测试下,由于刚接触sl,许多东西还是知道甚少,如有问题,欢迎大家指正。

原文地址:https://www.cnblogs.com/majunfeng/p/3933832.html