WPF изменить aligment метки и Viewbox - PullRequest
0 голосов
/ 11 марта 2019

Итак, у меня есть метка в 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>

Теперь, чтобы получить метку AutoSize, я должен установить для ширины и высоты значение Auto. Однако, когда я делаю это, я больше не могу использовать HorizontalContentAlignment, потому что метка - это размер текста. При привязке к размеру окна просмотра я могу его использовать, но AutoSize не работает.

Я думал о событии, тогда, когда пользователь меняет ``, тогда сработает событие, где я могу установить свойства окна просмотра и метки в коде.

Итак, вкратце, я ищу способ создания объекта с текстовыми объектами, который может автоматически изменять размер или настраиваться вручную.

1 Ответ

1 голос
/ 11 марта 2019

Вы можете просто установить свойство 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...