Я создаю отдельное приложение 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 позаботился о любом изменении размера или отступа шрифта, которые необходимы автоматически, чтобы мне не приходилось настраивать пользовательский интерфейс для каждого языка, который я поддерживаю.
Любое понимание приветствуется!
p.s. Вот XAML для SmallButtonBase. Это в основном определяет, что происходит, когда кнопка имеет фокус или нажата. Разное изображение используется для каждого случая.
<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>