Catel.MVVM.Providers.UserControlLogic.OnTargetViewLoadedAsync C# (CSharp) 메소드

OnTargetViewLoadedAsync() 공개 메소드

Called when the TargetView has just been loaded.
public OnTargetViewLoadedAsync ( object sender, EventArgs e ) : Task
sender object The sender.
e EventArgs The instance containing the event data.
리턴 Task
        public override async Task OnTargetViewLoadedAsync(object sender, EventArgs e)
        {
            await CompleteViewModelClosingAsync();

            // Do not call base because it will create a VM. We will create the VM ourselves
            //base.OnTargetControlLoaded(sender, e);

            // Manually updating target control content wrapper here (not by content property changed event handler),
            // because in WinRT UserControl does NOT update bindings while InitializeComponents() method is executing,
            // even if the Content property was changed while InitializeComponents() running there is no triggering of a binding update.
            CreateViewModelWrapper();

#if NET || SL5
            if (!SkipSearchingForInfoBarMessageControl)
            {
                Log.Debug("Searching for an instance of the InfoBarMessageControl");

                _infoBarMessageControl = TargetView.FindParentByPredicate(o => o is InfoBarMessageControl) as InfoBarMessageControl;

                ApiCop.UpdateRule<UnusedFeatureApiCopRule>("UserControlLogic.InfoBarMessageControl",
                    rule => rule.IncreaseCount(_infoBarMessageControl != null, TargetViewType.FullName));

                if (CreateWarningAndErrorValidatorForViewModel)
                {
                    ApiCop.UpdateRule<UnusedFeatureApiCopRule>("UserControlLogic.CreateWarningAndErrorValidator",
                        rule => rule.IncreaseCount(_infoBarMessageControl != null, TargetViewType.FullName));
                }

                Log.Debug("Finished searching for an instance of the InfoBarMessageControl");

                if (_infoBarMessageControl == null)
                {
                    Log.Warning("No InfoBarMessageControl is found in the visual tree of '{0}', consider using the SkipSearchingForInfoBarMessageControl property to improve performance", GetType().Name);
                }
            }
            else
            {
                Log.Debug("Skipping the search for an instance of the InfoBarMessageControl");
            }
#endif

            if (!CloseViewModelOnUnloaded && (ViewModel != null))
            {
                // Re-use view model
                Log.Debug("Re-using existing view model");
            }

            if (ViewModel == null)
            {
                // Try to create view model based on data context
                await UpdateDataContextToUseViewModelAsync(TargetView.DataContext);
            }

            if (DisableWhenNoViewModel)
            {
                TargetView.IsEnabled = (ViewModel != null);
            }
        }