WPF 更改标签和 Viewbox 的对齐方式

WPF change aligment of label and Viewbox

所以我在 viewbox 中有一个标签,所以当应用程序缩放时,标签也会缩放。然而,用户选择 AutoScale via ViewboxNo 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,我必须将宽度和高度设置为自动。但是,当我这样做时,我不能再使用 HorizontalContentAlignment 因为标签是文本的大小。当绑定到视图框大小时,我可以使用它,但 AutoSize 不起作用。

我正在考虑一个事件,然后当用户更改 `` 时将触发一个事件,我可以在代码中设置视图框和标签的属性。

简而言之,我正在寻找一种方法来创建可以自动调整大小或手动设置的文本对象。

您可以简单地通过 DataTrigger 设置 Viewbox 的 Stretch 属性,例如在布尔值 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>