WPF Textblock TargetNullValue not working?
Solution 1
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.
In order for TargetNullValue to work you must be able to evaluate the full path of [someViewModel].SomeVar.SomeSubVar.Name to null. If 'someViewModel', 'SomeVar', or 'SomeSubVar' are null then 'Name' can never be evaluated, and TargetNullValue won't apply.
Solution 2
The Binding's TargetNullValue
property is displayed in the TextBlock
if the [somveViewModel].SomeVar.SomeSubVar.Name
property is null. It doesn't cane the value of the [somveViewModel].SomeVar.SomeSubVar.Name
property. It effectively sets up an equivalency between null and the TargetNullValue
property's value.
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.
SuicideSheep
"If you see scary things, look for the helpers- you'll always see people helping" -Fred Rogers
Updated on July 28, 2022Comments
-
SuicideSheep almost 2 years
I have a wpf textblock as below:
<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.If I want to show a default value for this
TextBlock
I know I can declare and initiateSomeVar.SomeSubVar
and assign default value intoSomeVar.SomeSubVar.Name
but I would like to useTargetNullValue
instead. May I know which part is wrong? -
Tim Pohlmann about 8 yearsThis is what appears to happen, however this is not explained at all in the linked question. In fact, there are a lot of confusing answers and comments posted on that question.
-
Tim Pohlmann about 8 yearsI made a new question regarding TargetNullValue: stackoverflow.com/questions/36402291/…