3

我正在创建一个具有多语言支持的独立 WPF 应用程序。我找到了一些关于如何根据需要存储和访问字符串的优秀资源(主要是在 SO 上)。这部分非常简单且可行,但我对如何处理屏幕布局问题感到模糊。

我正在使用一些自定义图像来为我的应用程序添加按钮等。例如,这是一个带有一些文本的按钮:

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

替代文字

现在这里是带有其他语言文本的相同按钮:

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

替代文字

所以我的问题是:什么是防止这种“溢出”情况的好方法。我想让 XAML 处理自动需要的任何字体大小调整或缩进,这样我就不必为我支持的每种语言调整 UI。

任何见解表示赞赏!

ps 这是 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>
4

1 回答 1

2

尝试在您的 contentpresenter 周围放置一个视图框,其宽度和高度与您的按钮图像相匹配

像这样

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

我认为您可以允许 WPF 缩放字体以适应该位置。

于 2010-04-23T17:30:11.513 回答