WPF Textblock TargetNullValue不起作用?

时间:2014-03-11 03:10:34

标签: c# wpf xaml textblock targetnullvalue

我有一个wpf文本块,如下所示:

<TextBlock Text="{Binding [someViewModel].SomeVar.SomeSubVar.Name, 
                          TargetNullValue='-'}"/>

在我的viewmodel方面,我将拥有自己的逻辑,最终SomeVar.SomeSubVar将为空。

如果我想显示此TextBlock的默认值,我知道我可以声明并启动SomeVar.SomeSubVar并将默认值分配到SomeVar.SomeSubVar.Name,但我想使用TargetNullValue而是。我可以知道哪一部分是错的吗?

2 个答案:

答案 0 :(得分:14)

您可以将FallbackValue http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.fallbackvalue(v=vs.110).aspx与TargetNullValue结合使用。

为了使TargetNullValue起作用,您必须能够将[someViewModel] .SomeVar.SomeSubVar.Name的完整路径评估为null。如果'someViewModel','SomeVar'或'SomeSubVar'为null,则永远不会评估'Name',并且TargetNullValue将不适用。

答案 1 :(得分:4)

如果Binding's TargetNullValue属性为null,则TextBlock属性显示在[somveViewModel].SomeVar.SomeSubVar.Name中。它不会导致[somveViewModel].SomeVar.SomeSubVar.Name属性的值。它有效地设置了null和TargetNullValue属性值之间的等价性。

请参阅this question以获得更好的解释。

所以我的建议是,如果你想要一个非空的默认值,你需要在视图模型中设置它。