我更喜欢通过visual studio designer在画布上拖动控件,这样每个控件都有一个x和y坐标。我发现它比使用网格更快。但我仍然看到很多文章使用网格来布局控件,因此每个控件都有一行,一列。你对此有何看法,我的做法是错误的?
答案 0 :(得分:2)
通过使用画布,很难以一种好的方式调整所有大小,其他控件将自动调整大小(如果不是固定大小的课程)
答案 1 :(得分:1)
使用各种容器需要一些练习,但这是值得的。当您的控件位于容器中时,调整大小会自动生效,并且您的XAML会更有条理。
查看易于使用的第三方容器,例如autogrid。
答案 2 :(得分:1)
MS的标准指导是避免使用Canvas来布局控件。
引自MSDN Canvas文档:
Canvas是唯一的面板元素 没有固有的布局 特点。 Canvas有默认值 高度和宽度属性为零, 除非它是一个元素的孩子 自动调整其孩子的大小 元素。画布的儿童元素 永远不会调整大小,他们只是 定位在他们指定的 坐标。这提供了灵活性 对于固有的情况 尺寸限制或对齐是 不需要或不想要的。对于案件 你想要儿童内容 它自动调整大小并对齐 通常最好使用Grid元素。
所以,我认为这意味着在大多数情况下你不想使用Canvas而是使用Grid(或其他面板)来包含各种子UI元素。我个人觉得网格足以满足大多数需求。
参考文献:
画布 - http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.aspx
全球化和本地化 - http://msdn.microsoft.com/en-us/library/ms788718.aspx
答案 3 :(得分:0)
首选使用网格(行和列),因为它不依赖于屏幕分辨率。
答案 4 :(得分:0)
错误原因WPF支持其他替代读取方向。如果本地化发生变化,对于WPF,它不可能重新映射X / Y坐标,但在Grids和StackPanels中逻辑排列可以反转/更改。
绝对定位元素很少有好处