public virtual void OnTargetViewDataContextChanged(object sender, DataContextChangedEventArgs e)
{
if (IsCurrentDataContext(e))
{
return;
}
Log.Debug($"DataContext of TargetView '{TargetViewType?.Name}' has changed to '{ObjectToStringHelper.ToTypeString(TargetView.DataContext)}'");
LastKnownDataContext = null;
var dataContext = TargetView.DataContext;
if (dataContext == null)
{
return;
}
if (dataContext.IsSentinelBindingObject())
{
return;
}
// Here we have a data context that makes sense
LastKnownDataContext = (dataContext != null) ? new WeakReference(dataContext) : null;
if (ReferenceEquals(ViewModel, dataContext))
{
return;
}
if (dataContext.GetType().IsAssignableFromEx(ViewModelType))
{
// Use the view model from the data context, probably set manually
ViewModel = (IViewModel)dataContext;
}
}