2016-03-04 26 views
2

我需要一行5個按鈕分佈在手機屏幕的整個寬度上。顯示在每個按鈕上的文本根據區域設置進行設置:使用ResourceLoaderGetString方法從資源文件中檢索文本。應該是什麼這些按鈕的XAML代碼和他們的容器內,使在屏幕的整個寬度上佈局了一排本地化按鈕

  • 5個按鍵使用屏幕的整個寬度
  • 字體大小是所有5個按鈕
  • 沒有按鈕的內容截短的相同(認爲到英語/德國版本的相同文本的)
  • 按鈕(填充或裕度)之間的間距爲恆定

**** **** EDIT

審議通過如下傑裏提到的文檔後,我修改我的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> 

回答

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部分。這將映射到您在處理本地化的資源文件中使用的字符串。這裏有更多關於如何做到這一點的信息。

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

祝您好運

2

通常不需要後臺代碼本地化Button字幕和使用x:Uid然後使用YourButtonXuid.Content鍵入resw文件中的字符串資源。

除此之外,它似乎更多的是一個設計問題,而不是編程問題,儘管這些事情經常交叉。你可以把你的按鈕放在一個Grid的等星星大小的列中以支持你的條件1,2,4,但是正是因爲截斷原因的風險,特別是在電話上 - 你永遠不會這麼做。手機屏幕足夠寬,可以顯示4-5個由圖標標識的按鈕,但是如果要顯示文本,則不可能期望將其全部放在屏幕上,除非它們只有類似於應用程序欄按鈕的小文本標題無論如何,如果它太長,我認爲應該修剪文本。

我會考慮任何

  • 確保本地化的文本長度是有限的,或者使用
  • 不同的佈局或控制
+0

水平streched的StackPanel會不會是一種選擇嗎?因爲他/她從來沒有要求過等寬度的按鈕,並設置按鈕的最大寬度。 –

+0

褻瀆!:)但你說得對。他或她沒有這樣說。一個StackPanel將使用更少的空間,但仍然不能解決問題並且看起來很醜。 –

+0

褻瀆?大聲笑! xD只是一個建議,但。嘗試具體的條件編號3.醜陋的同意(Y) –