在屏幕的整个宽度上布置一排本地化按钮
laying out a row of localized buttons over the full width of the screen
我需要一行 5 个按钮分布在 phone 屏幕的整个宽度上。每个按钮上显示的文本根据区域设置进行设置:它是使用 ResourceLoader
的 GetString
方法从资源文件中检索的。这些按钮及其容器的 XAML 代码应该是什么,以便
- 5 个按钮占用了屏幕的整个宽度
- 所有 5 个按钮的字体大小相同
- 没有按钮内容被截断(想想同一文本的 English/German 版本)
- 按钮之间的间距(填充或边距)是恒定的
**** 编辑 ****
在查看下面 Jerry 提到的文档后,我修改了我的 XAML 代码和资源文件,如下所示:
<Grid >
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Uid="analyzeBtnCol"/>
<ColumnDefinition x:Uid="suggestBtnCol"/>
<ColumnDefinition x:Uid="stepBtnCol"/>
<ColumnDefinition x:Uid="undoBtnCol"/>
<ColumnDefinition x:Uid="solveBtnCol"/>
</Grid.ColumnDefinitions>
<Button x:Name="analyzeBtn" Grid.Column="0" x:Uid="analyzeBtn" Padding="4" HorizontalAlignment="Center" Click="AnalyseBtnFired" FontSize="10" />
<Button x:Name="suggestBtn" Grid.Column="1" x:Uid="suggestBtn" Padding="4" HorizontalAlignment="Center" Click="SuggestBtnFired" FontSize="10" />
<Button x:Name="stepBtn" Grid.Column="2" x:Uid="stepBtn" Padding="4" HorizontalAlignment="Center" Click="StepBtnFired" FontSize="10" />
<Button x:Name="undoBtn" Grid.Column="3" x:Uid="undoBtn" Padding="4" HorizontalAlignment="Center" Click="UndoBtnFired" FontSize="10" />
<Button x:Name="solveBtn" Grid.Column="4" x:Uid="solveBtn" Padding="4" HorizontalAlignment="Center" Click="SolveBtnFired" FontSize="10" />
</Grid>
"en-US"资源文件解压:
<data name="solveBtnCol.Width" xml:space="preserve">
<value>7*</value>
</data>
<data name="solveBtn.Content" xml:space="preserve">
<value>Solve</value>
</data>
<data name="solveBtn.FontSize" xml:space="preserve">
<value>13</value>
</data>
"nl-NL"资源文件解压:
<data name="solveBtnCol.Width" xml:space="preserve">
<value>10*</value>
</data>
<data name="solveBtn.Content" xml:space="preserve">
<value>Oplossen</value>
</data>
通常您不需要隐藏代码来本地化 Button
字幕并使用 x:Uid
然后使用 YourButtonXuid.Content
.
在 resw 文件中键入字符串资源
除此之外,它似乎更像是一个设计问题而不是编程问题,尽管这些问题经常交叉。您可以将按钮放在 Grid
和 equal-star-sized 列中以支持您的条件 1、2、4,但正是出于截断原因的风险,尤其是在 phone 上 - 您永远不会去做。 Phone 屏幕足够宽,可以显示 4-5 个由图标标识的按钮,但是如果你想显示文本,那么你不可能期望将它们放在整个屏幕上,除非它们只有类似的小文本标题到应用栏按钮,我认为 trim 它们的文本,如果它太长的话。
我会考虑
- 确保本地化文本长度有限或
- 使用不同的布局或控件
这是您想要的基本 XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button x:Uid="Button1" Grid.Column="0" Content="Button1" Click="{x:Bind ViewModel.DoButton1}" />
<Button x:Uid="Button2" Grid.Column="1" Content="Button2" Click="{x:Bind ViewModel.DoButton2}" />
<Button x:Uid="Button3" Grid.Column="2" Content="Button3" Click="{x:Bind ViewModel.DoButton3}" />
<Button x:Uid="Button4" Grid.Column="3" Content="Button4" Click="{x:Bind ViewModel.DoButton4}" />
<Button x:Uid="Button5" Grid.Column="4" Content="Button5" Click="{x:Bind ViewModel.DoButton5}" />
</Grid>
并注意 x:Uid 部分。这映射到您在处理本地化的资源文件中使用的字符串。下面是有关如何执行此操作的更多信息。
https://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh965329(v=win.10).aspx
祝你好运
我需要一行 5 个按钮分布在 phone 屏幕的整个宽度上。每个按钮上显示的文本根据区域设置进行设置:它是使用 ResourceLoader
的 GetString
方法从资源文件中检索的。这些按钮及其容器的 XAML 代码应该是什么,以便
- 5 个按钮占用了屏幕的整个宽度
- 所有 5 个按钮的字体大小相同
- 没有按钮内容被截断(想想同一文本的 English/German 版本)
- 按钮之间的间距(填充或边距)是恒定的
**** 编辑 ****
在查看下面 Jerry 提到的文档后,我修改了我的 XAML 代码和资源文件,如下所示:
<Grid >
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Uid="analyzeBtnCol"/>
<ColumnDefinition x:Uid="suggestBtnCol"/>
<ColumnDefinition x:Uid="stepBtnCol"/>
<ColumnDefinition x:Uid="undoBtnCol"/>
<ColumnDefinition x:Uid="solveBtnCol"/>
</Grid.ColumnDefinitions>
<Button x:Name="analyzeBtn" Grid.Column="0" x:Uid="analyzeBtn" Padding="4" HorizontalAlignment="Center" Click="AnalyseBtnFired" FontSize="10" />
<Button x:Name="suggestBtn" Grid.Column="1" x:Uid="suggestBtn" Padding="4" HorizontalAlignment="Center" Click="SuggestBtnFired" FontSize="10" />
<Button x:Name="stepBtn" Grid.Column="2" x:Uid="stepBtn" Padding="4" HorizontalAlignment="Center" Click="StepBtnFired" FontSize="10" />
<Button x:Name="undoBtn" Grid.Column="3" x:Uid="undoBtn" Padding="4" HorizontalAlignment="Center" Click="UndoBtnFired" FontSize="10" />
<Button x:Name="solveBtn" Grid.Column="4" x:Uid="solveBtn" Padding="4" HorizontalAlignment="Center" Click="SolveBtnFired" FontSize="10" />
</Grid>
"en-US"资源文件解压:
<data name="solveBtnCol.Width" xml:space="preserve">
<value>7*</value>
</data>
<data name="solveBtn.Content" xml:space="preserve">
<value>Solve</value>
</data>
<data name="solveBtn.FontSize" xml:space="preserve">
<value>13</value>
</data>
"nl-NL"资源文件解压:
<data name="solveBtnCol.Width" xml:space="preserve">
<value>10*</value>
</data>
<data name="solveBtn.Content" xml:space="preserve">
<value>Oplossen</value>
</data>
通常您不需要隐藏代码来本地化 Button
字幕并使用 x:Uid
然后使用 YourButtonXuid.Content
.
除此之外,它似乎更像是一个设计问题而不是编程问题,尽管这些问题经常交叉。您可以将按钮放在 Grid
和 equal-star-sized 列中以支持您的条件 1、2、4,但正是出于截断原因的风险,尤其是在 phone 上 - 您永远不会去做。 Phone 屏幕足够宽,可以显示 4-5 个由图标标识的按钮,但是如果你想显示文本,那么你不可能期望将它们放在整个屏幕上,除非它们只有类似的小文本标题到应用栏按钮,我认为 trim 它们的文本,如果它太长的话。
我会考虑
- 确保本地化文本长度有限或
- 使用不同的布局或控件
这是您想要的基本 XAML:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button x:Uid="Button1" Grid.Column="0" Content="Button1" Click="{x:Bind ViewModel.DoButton1}" />
<Button x:Uid="Button2" Grid.Column="1" Content="Button2" Click="{x:Bind ViewModel.DoButton2}" />
<Button x:Uid="Button3" Grid.Column="2" Content="Button3" Click="{x:Bind ViewModel.DoButton3}" />
<Button x:Uid="Button4" Grid.Column="3" Content="Button4" Click="{x:Bind ViewModel.DoButton4}" />
<Button x:Uid="Button5" Grid.Column="4" Content="Button5" Click="{x:Bind ViewModel.DoButton5}" />
</Grid>
并注意 x:Uid 部分。这映射到您在处理本地化的资源文件中使用的字符串。下面是有关如何执行此操作的更多信息。
https://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh965329(v=win.10).aspx
祝你好运