DateTime XAML绑定字符串格式,以便为DateTime.MinValue显示“null”

时间:2011-06-27 13:37:07

标签: c# wpf xaml data-binding

我对约会有约束力:

<TextBlock Text="{Binding Path=EndDateTime, StringFormat=d}"/>

我想要的是当它的值为DateTime.MinValue(DateTime的默认值)时显示null而不是日期。

这可能没有使用转换器,只是通过某种方式扩展我的绑定的StringFormat属性?

是否还有其他 XAML 解决方案?

提前谢谢!

2 个答案:

答案 0 :(得分:10)

您可以在TextBlock的样式中使用DataTrigger

<TextBlock>
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Text" Value="{Binding Path=EndDateTime, StringFormat=d}" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding EndDateTime}" Value="{x:Static sys:DateTime.MinValue}">
                    <Setter Property="Text" Value="NULL" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

答案 1 :(得分:0)

在Silverlight 4中没有针对此的XAML解决方案。在Silverlight 5中,您可以使用标记扩展,尽管这仍然是您必须编写的代码。在Silverlight 4中,您也可以使用行为。

我的建议是在ViewModel上公开一个提供null功能的属性。然后你不必使用转换器,虽然你绑定的属性可以按你的意愿工作。