#wpf #xaml #label #viewbox
#wpf #xaml #метка #окно просмотра
Вопрос:
Итак, у меня есть метка в viewbox
, поэтому при масштабировании приложения метка также будет масштабироваться. Однако пользователь сам решает, что выбрать AutoScale via Viewbox
или No autoscaling
, и устанавливает свойства для самой метки.
До сих пор я получал это:
<Viewbox Name="vb">
<Label
Name="lblText"
Width="{Binding ElementName=Sign, Path=ActualWidth}"
Height="{Binding ElementName=Sign, Path=ActualHeight}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="{Binding TextAlignment}"
VerticalContentAlignment="Center"
Background="Transparent"
Content="{Binding ObjectName}"
FontFamily="{Binding Font_Family}"
FontSize="{Binding FontSize}"
Foreground="{Binding FontColor}" />
</Viewbox>
Теперь, чтобы получить автоматический размер метки, я должен установить ширину и высоту в значение Auto. Однако, когда я делаю это, я больше не могу использовать HorizontalContentAlignment
, потому что метка имеет размер текста. При привязке к размеру окна просмотра я могу его использовать, но AutoSize
не работает.
Я думал о событии, затем, когда пользователь изменяет ` тогда произойдет событие, в котором я могу установить свойства окна просмотра и метки в коде.
Короче говоря, я ищу способ создать текстовый объект, который можно изменять автоматически или вручную.
Комментарии:
1. как насчет текстового блока?
2. Протестировал это и получил тот же результат, может быть, вы можете опубликовать пример того, как вы заставили это работать?
Ответ №1:
Вы могли бы просто установить Stretch
свойство Viewbox с помощью DataTrigger, например, для логического Autoscale
свойства:
<Viewbox>
<Viewbox.Style>
<Style TargetType="Viewbox">
<Setter Property="Stretch" Value="None"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Autoscale}" Value="True">
<Setter Property="Stretch" Value="Uniform"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Viewbox.Style>
...
</Viewbox>
Комментарии:
1. ДОХ…!!, что я не подумал об этом… Работает именно так, как я хотел, спасибо!