在屏幕的整个宽度上布置一排本地化按钮

laying out a row of localized buttons over the full width of the screen

我需要一行 5 个按钮分布在 phone 屏幕的整个宽度上。每个按钮上显示的文本根据区域设置进行设置:它是使用 ResourceLoaderGetString 方法从资源文件中检索的。这些按钮及其容器的 XAML 代码应该是什么,以便

**** 编辑 ****

在查看下面 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

祝你好运