我正在开发windows store应用程序,我对文本框拉伸有很大的问题。我希望有响应式设计,这意味着我使用了很多Grids
和VerticalAlignment="Stretch"
以及HorizontalAlignment="Stretch"
问题发生在TextBoxes中的FontSize是相同的并且未与中心对齐。这就是为什么我使用ViewBox
。
但不允许ViewBox在网格单元格中拉伸和填充空间。
<Viewbox Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" >
<TextBox HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
Text="{Binding Name, Mode=TwoWay}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
</Viewbox>
我可以使用一些硬编码的尺寸,但是在各种类型的分辨率下,我都迫不及待地想让我的UI适合所有类型的设备。
我也尝试根据实际屏幕尺寸计算尺寸,但这种方法非常麻烦。
答案 0 :(得分:0)
水平或垂直拉伸TextBox控件,不会拉伸其中的文本,这只会导致Control调整大小以填充可用空间并在其中显示更多文本。字形大小仍然仅依赖于FontSize属性。
如果要水平对齐TextBox内容,请将TextAlignment属性设置为HorizontalAlignment.Center。如果要垂直对齐TextBox内容,遗憾的是没有VerticalTextAlignment,但您可以将VerticalAlignment设置为VerticalAlignment.Center(而不是Stretch),以便TextBox垂直放置在它的容器中间。 / p>
为了设计适合所有类型设备的app,您可以查看MSDN中的指南:
我的个人经验是,设计多种尺寸并不意味着您根本不必硬化任何尺寸,或者您需要拉伸文本框的内容。更重要的是以不同的方式重新定位,隐藏/显示元素。看看内置的Windows Metro应用程序(现在通用)以及它们在不同大小上的行为方式。