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

时间:2016-03-04 14:48:19

标签: c# winrt-xaml

我需要一排5个按钮,分布在手机屏幕的整个宽度上。每个按钮上显示的文本根据区域设置进行设置:使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <!--first fragment(left screen) --> <fragment android:name="com.example.android.fragments.ArticleListFragment" android:id="@+id/headlines_fragment" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" > </fragment> <!--second fragment(right screen) --> <fragment android:name="com.example.android.fragments.ArticleFragment" android:id="@+id/article_fragment" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent"> <Button android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/article_new_fragment" android:text="OK!" /> </fragment> </LinearLayout> 的{​​{1}}方法从资源文件中检索该文本。什么应该是这些按钮及其容器的XAML代码,以便

  • 5个按钮使用屏幕的整个宽度
  • 所有5个按钮
  • fontsize都相同
  • 没有按钮内容被截断(想想相同文本的英文/德文版本)
  • 按钮之间的间距(填充或边距)是恒定的

****编辑****

在查看下面Jerry提到的文档后,我修改了我的XAML代码和资源文件,如下所示:

GetString

“en-US”资源文件提取:

ResourceLoader

“nl-NL”资源文件提取:

        <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>

2 个答案:

答案 0 :(得分:2)

通常,您不需要代码来本地化Button字幕并使用x:Uid然后使用YourButtonXuid.Content键入resw文件中的字符串资源。

除此之外,它似乎更像是一个设计问题,而不是编程问题,尽管这些事情经常交叉。您可以将按钮放在Grid中,使用等号星大小的列来支持您的条件1,2,4,但正是出于截断原因的风险,特别是在电话上 - 您永远不会这样做。手机屏幕宽度足以显示由图标标识的4-5个按钮,但如果您想要显示文本,那么除非他们只有类似于app的小文本标题,否则您可能无法在整个屏幕上显示它们。如果它的长度太长,我认为它会修剪它们的文本按钮。

我要么考虑

  • 确保本地化文本长度有限或
  • 使用不同的布局或控件

答案 1 :(得分:1)

这是您想要的基本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部分。这将映射到您在Resources文件中使用的字符串,您可以在其中处理本地化。以下是有关如何执行此操作的更多信息。

  

https://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh965329(v=win.10).aspx

祝你好运