自从我开始使用UWP以来,我一直面临着这个奇怪的问题。每当我使用XAML定位我的元素(在中间或左上角对齐,基本上只使用代码)时,无论我在哪个设备上运行应用程序,我的手机或设备,元素的位置都与设计视图中的位置完全相同我的电脑(两台Win10)。
但是,如果我在设备上部署应用程序时将元素拖到画布上我想要的位置,则布局完全搞砸了。有时候某些元素会从视口中消失!
长话短说,当我在部署应用程序时拖放元素时,这不是我在VS中设置它们的方式。但是当我使用代码(XAML)定位它们时,它们就可以了。
如何解决此问题,以便拖放元素不会搞砸我的应用布局?
答案 0 :(得分:1)
我会直截了当,我也会尽量保持简短。
您面临的问题是Adaptive Layout
。让我们深入探讨它。
toolbox
拖放元素时,Visual Studio会为您快速XAML
。5" Phone 1920x1080 300% scale
或某些桌面版本的配置,例如:23" Desktop 1920x1080 100% scale
。这告诉visual studio您的首选屏幕尺寸为设计时间。你也可以改变它(一旦你创建了你的设计,总是这样做)。如果您根据屏幕尺寸进行设计,然后将其更改为其他屏幕尺寸,您就会知道出了什么问题。23"
上进行设计,并将UI element
从toolbox
拖放到屏幕中心,那么Margin
看起来就像Margin="909,505,0,0"
1}}。5"
设计器屏幕,您会注意到您的UI元素已消失。好吧没有消失只是搬出了地方。 这样做是因为Margin
被硬编码为Margin="909,505,0,0"
。在5"屏幕大致宽度为400px或更少,高度为600px或更高。所以909的Left Margin
会将它推离屏幕区域,更不用说上边距了。这就是为什么你的UI在运行时变得混乱的原因。
Grid.RowDefinitions
和Grid.ColumnDefinitions
element
我已经回答了一些关于自适应布局和设计的问题。它们可能适用于Windows Phone 8或WinRT或UWP,但请记住XAML
是XAML,自适应设计是adaptive design
。链接如下:
希望它有所帮助。任何问题随时可以使用评论部分
答案 1 :(得分:0)
长话短说,没有办法。如果将元素放在某个位置,Visual Studio无法知道它是否与某些东西对齐,如果你有一个网格,列是否需要相对大小或绝对等。你需要检查所有这些数据并在代码中手动设置它们或者在元素的属性中。