WPF изменяет формат метки и окна просмотра

#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. ДОХ…!!, что я не подумал об этом… Работает именно так, как я хотел, спасибо!