【问题标题】:WPF change aligment of label and ViewboxWPF改变标签和Viewbox的对齐方式
【发布时间】:2019-03-11 14:52:59
【问题描述】:

所以我在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 不起作用。

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

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

【问题讨论】:

  • TextBlock 怎么样?
  • 测试它并得到相同的结果,也许你可以发布一个你如何让它工作的例子?

标签: wpf xaml label viewbox


【解决方案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>

【讨论】:

  • DOH...!!,我没想到这个...完全按照我的意愿工作,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
相关资源
最近更新 更多