Hi Stackoverflowers!
imagine the following simple Models (example for simplicity reasons; in fact, we have MVVM here but it doesn't matter):
public class User {
public string Username { get; set; }
}
public class StackOverflowUser : User {
public int Reputation { get; set; }
}
Now we have a Silverlight UserControl
which contains the following Controls
(again, this is just an example, stripped down to the core):
<Grid>
<TextBlock Text="Username:" />
<TextBlock Text="{Binding Path=Username}" />
<TextBlock Text="Reputation:" />
<TextBlock Text="{Binding Path=Reputation}" />
</Grid>
Now I'd like this UserControl
to be compatible with both Models, User
and StackOverflowUser
. I might set the UserControl's DataContext
to either a User
or StackOverflowUser
Type:
this.DataContext = new User { Username = "john.doe" };
If set to StackOverflowUser
, everything works fine. If set to User
, I'm getting a "BindingExpression Path error", because the Property Reputation
is missing in the User
Model. Which I understand completely.
Is there any way to 1) avoid this exception and 2) control the visibility of the controls, collapse when bound property is not available?
Of course, we prefer an elegant solution, where the problem is solved by tuning the Binding Expression and/or using Converters etc. and avoid tons of code behind if possible.
Thanks in advance for your help and suggestions,
best regards,
Thomas