繁体   English   中英

WPF:在Canvas或Grid上定位表单元素?

[英]WPF: Position form elements on Canvas or Grid?

我更喜欢通过Visual Studio设计器在画布上拖动控件,以使每个控件都具有x和y坐标。 我发现它比使用网格快得多。 但是我仍然看到很多文章使用网格来排列控件,因此每个控件都有一行,一列。 您对此有何看法,我的做法是否错误?

通过使用画布,很难很好地调整所有内容的大小,其他控件也会自动调整大小(如果课程大小没有固定)

使用各种容器需要一些实践,但这是值得的。 当控件位于容器中时,调整大小会自动进行,并且XAML会保持井井有条。

出易用的第三方容器,例如autogrid

MS的标准指导是避免使用Canvas来布置控件。

引用MSDN Canvas文档:

画布是唯一没有固有布局特征的面板元素。 画布的默认“高度”和“宽度”属性为零,除非它是自动调整其子元素大小的元素的子元素。 画布的子元素永远不会调整大小,它们只是位于其指定的坐标处。 这为不需要或不需要固有大小限制或对齐的情况提供了灵活性。 对于您希望子内容自动调整大小和对齐的情况,通常最好使用Grid元素。

因此,我认为这意味着在大多数情况下,您将不想使用Canvas而是使用Grid(或另一个面板)来包含各种子UI元素。 我个人认为网格足以满足大多数需求。

参考文献:

画布-http: //msdn.microsoft.com/zh-CN/library/system.windows.controls.canvas.aspx

全球化和本地化-http: //msdn.microsoft.com/en-us/library/ms788718.aspx

首选使用grid(行和列),因为它不依赖于屏幕分辨率。

错误原因WPF支持其他替代读取方向。 如果本地化发生变化,则对于WPF来说,不可能重新映射X / Y坐标,但是在Grids和StackPanels中,逻辑排列可以颠倒/更改。

绝对定位元素很少有好处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM