> 其他综合 > WPF编程宝典——使用C# 2012和.NET 4.5(第4版) 3.5 使用Canvas面板进行基于坐标的布局 2013-08-21 10:39:11 我要投稿
本文所属图书 > WPF编程宝典——使用C# 2012和.NET 4.5(第4版)
本书全面讲解WPF的实际工作原理,是一本WPF权威著作。在紧贴实用示例这一思想的引导下,列出实用提示,引导以专业的方式使用WPF。本书开篇介绍WPF基本概念以便为您奠定坚实的基础,并将现有C#技能作为引用框架,... 立即去当当网订购
到目前为止唯一一个尚未介绍的布局容器是Canvas面板。Canvas面板允许使用精确的坐标放置元素,如果设计数据驱动的富窗体和标准对话框,这非一个并非好的选择,;但如果需要构建其他一些不同的内容(例如,为一个图形工具创建绘图表面),Canvas面板可能是一个有用的工具。Canvas面板还是最轻量级的布局容器。这是因为Canvas面板没有包含任何复杂的布局逻辑,用以改变其子元素的首选尺寸。Canvas面板只是在指定的位置放置其子元素,并且其子元素具有所希望的精确尺寸。
为在Canvas面板中定位一个元素,需要设置Canvas.Left和Canvas.Top附加属性。Canvas.Left属性设置元素左边和Canvas面板左边之间的单位数。,Canvas.Top属性设置子元素顶边和Canvas面板顶边之间的单位数。同样,这些数值也是以设备无关单位设置的,当将系统DPI设置为96 dpi时,设备无关单位恰好等于通常的像素。
提示注意:
另外,可使用Canvas.Right属性而不是使用Canvas.Left属性,来确定元素和Canvas面板右边缘间的距离;可使用Canvas.Bottom属性而不是使用Canvas.Top属性,来确定元素和Canvas面板底部边缘的距离。不能同时使用Canvas.Right属性和Canvas.Left属性,也不能同时使用Canvas.Top属性和Canvas.Bottom属性。
可使用Width属性和Height属性明确设置子元素的尺寸。与使用其他面板相比,使用Canvas面板时这种设置更普遍,因为Canvas面板没有自己的布局逻辑(并且,当需要精确控制一个组合元素如何排列时,经常会使用Canvas面板)。如果没有设置Width属性和Height属性,元素会获取它所期望的尺寸—— 换句话说,它将变得足够大以适应其内容。
下面是一个包含4个按钮的简单Canvas面板示例:
<Canvas>
<Button Canvas.Left="10" Canvas.Top="10">(10,10)</Button>
<Button Canvas.Left="120" Canvas.Top="30">(120,30)</Button>
<Button Canvas.Left="60" Canvas.Top="80" Width="50" Height="50">
(60,80)</Button>
<Button Canvas.Left="70" Canvas.Top="120" Width="100" Height="50">
(70,120)</Button>
</Canvas>
图3-19显示了结果。
如果改变窗口的大小,Canvas面板就会拉伸以填满可用空间,但Canvas面板上的控件不会改变其尺寸和位置。Canvas面板不包含任何锚定和停靠功能,这两个功能是在Windows窗体中使用坐标布局提供的。造成该问题的部分原因是为了保持Canvas面板的轻量级。,另一个原因是为了防止以不当目的使用Canvas面板(例如,确定一个标准用户界面的布局)。
与其他所有布局容器一样,可在一个用户界面中嵌套Canvas面板。这意味着可使用Canvas面板在窗口的一部分中绘制一些细节内容,而在窗口的其余部分使用更合乎标准的WPF面板。
提示:
如果与其他元素一起使用Canvas面板,可能希望将它的ClipToBounds属性设置为true。这样,如果Canvas面板中的元素被拉伸超出Canvas面板的边界,将在Canvas面板的边缘处剪裁这些子元素(这样可以阻止它们与窗口中的其他元素重叠)。其他所有布局容器总是剪裁它们的子元素以适应其尺寸,而不考虑ClipToBounds的设置。
点击复制链接 与好友分享!回本站首页 您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力 上一篇:3.4.6 UniformGrid面板 下一篇:3.5.1 Z顺序 相关文章1.2.2 书中使用的敏捷术语
1.4 本书中所使用术语的一般信息
2.3 使用CMMI模型时从哪里开始才能
2.4 使用CMMI模型时开始过程改进的
2.11 使用CMMI模型时可以通过不同的
3.2.2 使用函数句柄
11.3.2 使用Windows身份验证
11.3.3 使用Forms身份验证
8.3.1 有效地使用Task对话框
16.4.2 使用Configuration Manager
图文推荐