Catel.MVVM.Providers.LogicBase.OnTargetViewDataContextChanged C# (CSharp) Method

OnTargetViewDataContextChanged() public method

Called when the DataContext property of the TargetView has changed.
public OnTargetViewDataContextChanged ( object sender, DataContextChangedEventArgs e ) : void
sender object The sender.
e DataContextChangedEventArgs The instance containing the event data.
return void
        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;
            }
        }