8

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

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

在我的视图模型方面,我将有自己的逻辑,最终SomeVar.SomeSubVar将为空。

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

4

2 回答 2

19

您可能会考虑将 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 将不适用。

于 2014-03-11T03:35:39.363 回答
4

如果该属性为空,则该属性Binding's TargetNullValue显示在 中。它不会影响财产的价值。它有效地建立了 null 和属性值之间的等价关系。TextBlock[somveViewModel].SomeVar.SomeSubVar.Name[somveViewModel].SomeVar.SomeSubVar.NameTargetNullValue

请参阅此问题以获得很好的解释。

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

于 2014-03-11T03:39:21.787 回答