2010-04-23 21 views
2

我正在創建一個具有多語言支持的獨立WPF應用程序。我已經找到了一些很好的資源(主要是關於如何)根據需要存儲和訪問字符串。這部分非常簡單直觀,但我很在乎如何處理屏幕布局問題。在WPF/XAML中使用多語言支持處理佈局問題的最佳方式是什麼?

我使用一些自定義的圖片對皮膚了我的按鈕等。例如應用程序,在這裏與內一些文本的按鈕:

<Button 
     Canvas.Left="33" 
     Canvas.Top="484" 
     Style="{StaticResource SmallButtonBase}"> 
     <TextBlock     
      FontSize="20" 
      FontWeight="Bold"   
      TextAlignment="Center" FontFamily="Helvetica">         
      Enter 
     </TextBlock> 
    </Button> 

alt text

現在這裏是相同的按鈕從另一種語言的文字:

<Button 
     Canvas.Left="33" 
     Canvas.Top="484" 
     Style="{StaticResource SmallButtonBase}"> 
     <TextBlock     
      FontSize="20" 
      FontWeight="Bold"   
      TextAlignment="Center" FontFamily="Helvetica">         
      Enterenschtein 
     </TextBlock> 
    </Button> 

alt text

所以我的問題是:什麼是防止這種「溢出」情況的好方法。我想讓XAML自動處理需要的任何字體大小調整或縮進,以便我不必爲我支持的每種語言調整UI。

任何見識都被讚賞!

p.s.這裏是SmallButtonBase的XAML。它基本上定義了當按鈕具有焦點或被按下時發生的情況。每種情況都使用不同的圖像。

<Style x:Key="SmallButtonBase" TargetType="Button"> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
    <Setter Property="SnapsToDevicePixels" Value="True" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <Grid x:Name="Container"> 
        <Image x:Name="Img" Source="/Resources/Elements/Buttons/10.png" Margin="6" /> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsKeyboardFocused" Value="True"> 
         <Setter TargetName="Img" Property="Source" Value="/Resources/Elements/Buttons/11.png" /> 
         <Setter TargetName="Img" Property="Margin" Value="0" /> 
        </Trigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsKeyboardFocused" Value="True" /> 
          <Condition Property="IsPressed" Value="True" /> 
         </MultiTrigger.Conditions> 
         <Setter TargetName="Img" Property="Source" Value="/Resources/Elements/Buttons/12.png" /> 
        </MultiTrigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+1

您應該發佈定義SmallButtonBase樣式的代碼。解決方案將採用這種風格。我想你有一個硬編碼的寬度和高度,他們應該是'自動' – 2010-04-23 16:05:38

回答

2

嘗試將視框周圍的contentpresenter有一個固定的寬度和高度相匹配的圖像按鈕

這樣

<Viewbox Width="85" Height="85"> 
    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
</Viewbox> 

我想,那麼你可以讓WPF縮放字體以適應該位置。

+0

賓果邦戈。奇蹟般有效。佈局基本上是: BabaBooey 2010-04-23 20:20:48

相關問題