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 initiate SomeVar.SomeSubVar
and assign default value into SomeVar.SomeSubVar.Name
but I would like to use TargetNullValue
instead. 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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With