c# - 我的一个 XAML 表单在设计上看起来与调试不同
问题描述
我项目中的一个 XAML 表单在设计时看起来是我想要的样子,但是当我调试时,表单的元素大小不同,位置也不同。我该如何解决?
如果我的 XAML 代码没有帮助,我深表歉意。我不熟悉 XAML,也不知道要包括什么。如有必要,我可以添加任何额外的代码。
从表单调试时,我尝试删除并重新添加位于不同位置的元素。
调试表单中的文本块未对齐,并且列表框大于应有的大小。
Xaml
</ContentDialog>
<Rectangle HorizontalAlignment="Left" Height="195" Margin="766,793,0,0" VerticalAlignment="Top" Width="463" FocusVisualPrimaryBrush="#FF1B0303" Fill="{ThemeResource AppBarBorderThemeBrush}"/>
<ListBox Margin="1617,192,21,348"/>
解决方案
从您附上的图片中,我只能假设您为文本框指定的边距与矩形不同。这很容易测试。
<Rectangle HorizontalAlignment="Left" Height="195" Margin="766,793,0,0" VerticalAlignment="Top" Width="463" FocusVisualPrimaryBrush="#FF1B0303" Fill="{ThemeResource AppBarBorderThemeBrush}"/>
这里有两条重要线索——
Margin="766,793,0,0" //父元素中的相对位置
Width="463" Height="195" // 矩形的大小
将这些值与您引用的文本块进行比较,希望您能找到问题所在。
注意:全屏应用的窗口大小与设计不同,因此相对位置也会发生变化。尝试在设计中更改窗口宽度/高度(到您的全屏分辨率),这应该显示与正在运行的应用程序相同的视图。
您可以尝试将它们都放在同一个父级(例如网格)中。我已经用这个 UWP xaml 进行了测试,它似乎在做这个伎俩:
<Grid Margin="766,793,0,0" Width="463" Height="195">
<Rectangle HorizontalAlignment="Left" VerticalAlignment="Top" FocusVisualPrimaryBrush="#FF1B0303" Fill="{ThemeResource AppBarBorderThemeBrush}"/>
<ListBox>
<TextBlock Text="asda"/>
<TextBlock Text="asda"/>
<TextBlock Text="asda"/>
<TextBlock Text="asda"/>
<TextBlock Text="asda"/>
</ListBox>
</Grid>
本质上,父元素网格将设置大小和位置,子元素将继承这些属性。
推荐阅读
- c++ - 来自数组的 QAudioInput
- javascript - Ngx-Datatable - 对列进行排序时 rowIndex 值不正确
- node.js - 使用 req.session.userID 时出错
- r - 如何根据另一个表的值删除一个表中的行
- javascript - Javascript:将margin-top添加到对象,具有其他对象的对象在对象A内,页面上有多个对象A
- angular - 如何使用 service 和 observable 在组件之间共享数据?
- select - 如何选择下拉列表的值
- udp - 如何在浏览器上播放 UDP 流?
- c++ - 最多一个数的质数
- python - 在元组中搜索集合