如何在具有绑定的TextBlock中实现NullText?

问题描述 投票:8回答:4

我想为绑定到ViewModel中的属性的TextBlock实现“ NullText”行为。当ViewModel中的该属性为null或为空时,我想显示类似“ 无数据”的灰色斜体文本。我希望它遵循MVVM模式,但我迷路了...

更新因此,在试用了詹姆斯·韦伯斯特(James Webster)建议的解决方案之后,我就可以像这样工作了……]

<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
    <c:NullOrEmptyValueConverter x:Key="NullOrEmptyValueConverter" Text="(No Data)"/>
</UserControl.Resources>

 ...     

<TextBlock Name="SerialNumberTextBlock" Text="{Binding Path=SerialNumber, Converter={StaticResource NullOrEmptyValueConverter}}">
    <TextBlock.Resources>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=SerialNumberTextBlock, Path=Text}" Value="(No Data)">
                    <Setter Property="FontStyle" Value="Italic"/>
               </DataTrigger>
           </Style.Triggers>
        </Style>
    </TextBlock.Resources>
</TextBlock>

我想为绑定到ViewModel中的属性的TextBlock实现“ NullText”行为。当ViewModel中的该属性为null或为空时,我想显示灰色斜体...

c# wpf
4个回答
5
投票

我建议实现一个IValueConverter;如果源值不为null或为空,则将其传递给TextBlock。如果源值为null或为空,则呈现您选择的文本。


2
投票

我认为您不需要创建Converter类,只需编写这样的样式代码。


0
投票

您可以尝试绑定到看起来如此的属性


0
投票

晚会很晚,但这是我的答案。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.