【问题标题】:Changing content of a Label with a DataTrigger使用 DataTrigger 更改标签的内容
【发布时间】:2018-06-14 06:23:45
【问题描述】:

我尝试将标签的行为更改为在通常显示“0”时显示“-”。我尝试通过使用 DataTrigger 来实现这一点(我也在考虑使用转换器,但 DataTrigger 可能是我的代码更优雅的解决方案)。

<Label Grid.Row="1" Grid.Column="1" Content="{Binding LsMw, UpdateSourceTrigger=PropertyChanged}" ContentStringFormat="{}{0:########0}">
            <Label.Style>
                <Style TargetType="Label">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Content}" Value="0">
                            <Setter Property="Content" Value="-"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Label.Style>
        </Label>

不幸的是,无论是 this 还是我将触发器直接绑定到属性的 varint 都不起作用。

有什么建议吗? 提前致谢!

【问题讨论】:

  • 这里的根本问题是,如果通过属性设置Content,Style 无法替换Content 的值(由于dependency property value precedence)。如果您通过样式设置器而不是属性设置默认内容绑定,则触发器将能够替换它,因为允许样式覆盖自身。

标签: wpf data-binding datatrigger


【解决方案1】:

如果您要使用TextBlock,或者将LabelContent 设置为TextBlock,您可以使用:

<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding LsMw, StringFormat={}{0:########0;-########0;-}}"/>

【讨论】:

    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2020-03-20
    相关资源
    最近更新 更多