My scenario:
I’ve got a Silverlight Application with a View, where i want to bind the textboxes to an object (two-way) and all labels to a dictionary holding the label translations.
My approach was to set the datacontext of the page to a dictionary with two items, one of them is the object and the other is the translation-dictionary.
In xaml the code looks like the following:
<TextBlock Text="{Binding [dict].[name],FallbackValue='Fallback'}" />
<TextBox Text="{Binding [obj].name,Mode=TwoWay}" />
This works initially, if I however change the object on the datacontext, the xaml is not notified about any changes and doesn’t update.
I’ve had a working solution using a Converter for the translations, however due to the limitations on one converterparameter I didn’t like the solution. In addition it wasn’t possible to place a fallback-value in the textblock, which resulted in “invisible” textblocks while designing the page.
Any suggestions on how to solve this issue? It doesn’t have to be using my dictionary, it would be also okay if i could set the datacontext to the object (which works) and bind the labels somehow different.
I found a solution, but wasn’t able to answer my own question (8h limit..)
I think this is just the approach Hydroslide suggested.
Create a class which holds all data and implements INotifyPropertyChanged
Define a private var in your page code
In the constructor of your page, fill your “mycontext” with the desired data
Change your xaml to the following
Update your object/dictionary as you like using