uwp - StackPanel ,边框在 UWP 中无法正确绘制?
问题描述
<StackPanel BorderBrush="LightGray" Width="200" Height="32" BorderThickness="1">
<TextBlock Text="hai" FontSize="14" Height="20" LineHeight="20" Margin="12 6 0 6"/>
</StackPanel>
当我将 TextBlock 边距设置为 (12 6 0 6) 时,StackPanel 的底部边框将无法正确呈现。如果我将边距设置为 (12 6 0 0),它工作正常。我不知道这里到底发生了什么。任何人都可以解释一下吗?
解决方案
原因是总和超过了TextBlock.Height
Stackpanel内部空间margin.Top
的margin.Bottom
高度。
在您的场景中,您设置StackPanel.BorderThickness
为1,这导致Stackpanel的内部高度为30。如果您将margin设置为(12 6 0 6),则TextBlock.Height和margin.Top和margin.Bottom的总和为32,它超过30,所以文本块覆盖了stackpanel的边界bottem。
例如,如果您设置 StackPanel. BorderThickness 为 4,如下:
<StackPanel BorderBrush="LightGray" Width="200" Height="32" BorderThickness="4">
<TextBlock Text="hai" FontSize="14" Height="20" LineHeight="20" Margin="12,2,0,2"/>
</StackPanel>
可以看到,内部高度是24,textblock高度是20,所以我们需要设置margin.Top和margin.Bottom之和小于4,比如(12 2 0 2),(12 2 0 1),(12 2 0 0)
推荐阅读
- sql - 在列宽范围内格式化 SQL 结果
- java - 在端点和元素之前/之后以恒定时间插入的数据结构?
- angular - Angular Universal + pwa ERROR { 错误:未捕获(承诺中):错误:无法匹配任何路由。URL 段:'ngsw_worker.es6.js.map'
- excel - 单击 Excel 中的超链接是否会在超链接地址中添加 25?
- javascript - 如何在 Angular Universal 中捕获服务器上的组件错误?
- java - 用另一个数组中的元素填充数组
- node.js - 使用 arrayFilters 更新嵌套数组
- c# - 在mvc中将数据从视图传递到控制器
- jquery - 没有匿名函数触发jquery事件函数
- git - Git pull 创建了不需要的合并提交