我正在创建一个支持多语言的独立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。
非常感谢任何见解!
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>
答案 0 :(得分:2)
尝试在内容提供者周围放置一个视图框,其宽度和高度固定,与按钮的图像相匹配
像这样<Viewbox Width="85" Height="85">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Viewbox>
我认为您可以允许WPF缩放字体以适合该位置。