简体   繁体   English

WPF Textblock TargetNullValue不起作用?

[英]WPF Textblock TargetNullValue not working?

I have a wpf textblock as below: 我有一个wpf文本块,如下所示:

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

At my viewmodel side, I'll have my own logic that in the end, SomeVar.SomeSubVar will be null. 在我的viewmodel方面,我将拥有自己的逻辑,最终, SomeVar.SomeSubVar将为null。

If I want to show a default value for this TextBlock I know I can declare and initiate SomeVar.SomeSubVar and assign default value into SomeVar.SomeSubVar.Name but I would like to use TargetNullValue instead. 如果我想显示此TextBlock的默认值,我知道我可以声明并启动SomeVar.SomeSubVar并将默认值分配给SomeVar.SomeSubVar.Name但我想使用TargetNullValue May I know which part is wrong? 我可以知道哪一部分是错的吗?

You might look at using FallbackValue http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.fallbackvalue(v=vs.110).aspx in conjunction with TargetNullValue. 您可以使用FallbackValue http://msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.fallbackvalue(v=vs.110).aspx与TargetNullValue一起使用。

In order for TargetNullValue to work you must be able to evaluate the full path of [someViewModel].SomeVar.SomeSubVar.Name to null. 为了使TargetNullValue起作用,您必须能够将[someViewModel] .SomeVar.SomeSubVar.Name的完整路径评估为null。 If 'someViewModel', 'SomeVar', or 'SomeSubVar' are null then 'Name' can never be evaluated, and TargetNullValue won't apply. 如果'someViewModel','SomeVar'或'SomeSubVar'为null,则永远不会评估'Name',并且不会应用TargetNullValue。

The Binding's TargetNullValue property is displayed in the TextBlock if the [somveViewModel].SomeVar.SomeSubVar.Name property is null. 如果[somveViewModel].SomeVar.SomeSubVar.Name属性为null,则Binding's TargetNullValue属性显示在TextBlock It doesn't cane the value of the [somveViewModel].SomeVar.SomeSubVar.Name property. 它没有[somveViewModel].SomeVar.SomeSubVar.Name属性的值。 It effectively sets up an equivalency between null and the TargetNullValue property's value. 它有效地设置null和TargetNullValue属性值之间的等效性。

See this question for a good explanation. 请参阅此问题以获得更好的解释。

So my advice is if you want to have a non-null default value, you need to set it in the view model. 所以我的建议是如果你想要一个非空的默认值,你需要在视图模型中设置它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM