WPF更改标签和Viewbox的要求

时间:2019-03-11 14:53:00

标签: wpf xaml label 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,我必须将Width和Height设置为Auto。但是,当我这样做时,我不能再使用HorizontalContentAlignment,因为标签是文本的大小。当绑定到视图框大小时,我可以使用它,但是AutoSize不起作用。

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

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

1 个答案:

答案 0 :(得分:1)

您只需通过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>