Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="parameters"></param>
        /// <param name="updateStack"></param>
        /// <param name="postProcess"></param>
        private void DoInternalNavigate(IViewParameters parameters, Func <bool> updateStack, Action <object> postProcess)
        {
            // プラグインコンテキスト
            var pluginContext = new ForwadingPluginContext();

            // 遷移元画面遷移イベント
            ViewForwardFrom(CurrentView, pluginContext);

            // 前状態
            var previousViewId = CurrentViewId;
            var previousView   = CurrentView;

            // スタック更新
            var restore = updateStack();

            // イベント
            var args = new ViewForwardEventArgs(CurrentViewId, previousViewId, previousView, parameters ?? EmptyParameters, restore);

            // ナビゲーターイベント
            if (Forwarding != null)
            {
                Forwarding(this, args);
            }

            // 遷移先画面遷移イベント
            ViewForwardTo(CurrentView, args, CurrentRestoreParameter, pluginContext);

            // 復帰情報クリア
            CurrentRestoreParameter = null;

            // 後処理
            postProcess(previousView);
        }
Ejemplo n.º 2
0
 public override void OnNavigateTo(ForwadingPluginContext context, object view)
 {
     var parameters = context.Load<Dictionary<string, object>>(GetType());
     if (parameters != null)
     {
         ApplyImportParameters(view, parameters);
     }
 }
Ejemplo n.º 3
0
        public override void OnNavigateTo(ForwadingPluginContext context, object view)
        {
            var parameters = context.Load <Dictionary <string, object> >(GetType());

            if (parameters != null)
            {
                ApplyImportParameters(view, parameters);
            }
        }
Ejemplo n.º 4
0
        //--------------------------------------------------------------------------------
        // メソッド.ビューイベント
        //--------------------------------------------------------------------------------

        #region <メソッド.ビューイベント>

        /// <summary>
        /// 遷移元画面イベント
        /// </summary>
        /// <param name="view">ビュー</param>
        /// <param name="context">プラグインコンテキスト</param>
        private void ViewForwardFrom(object view, ForwadingPluginContext context)
        {
            if (view == null)
            {
                return;
            }

            var target = provider.ResolveEventTarget(view);

            // 遷移イベント
            var support = target as IViewEventSupport;

            if (support != null)
            {
                support.OnViewNavigating();
            }

            // プラグインイベント
            foreach (var plugin in Plugins)
            {
                plugin.OnNavigateFrom(context, target);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 遷移先画面イベント
        /// </summary>
        /// <param name="view">ビューインスタンス</param>
        /// <param name="args">引数</param>
        /// <param name="parameter">復帰情報</param>
        /// <param name="context">プラグインコンテキスト</param>
        private void ViewForwardTo(object view, ViewForwardEventArgs args, object parameter, ForwadingPluginContext context)
        {
            var target = provider.ResolveEventTarget(view);

            // プラグインイベント
            foreach (var plugin in Plugins)
            {
                plugin.OnNavigateTo(context, target);
            }

            // 遷移イベント
            var support = target as IViewEventSupport;

            if (support != null)
            {
                support.OnViewNavigated(args);
            }

            // 活性化
            provider.ViewActive(view, parameter);

            // 活性化イベント
            if (support != null)
            {
                support.OnViewActived(args);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 遷移先ビューイベント
 /// </summary>
 /// <param name="context">プラグインコンテキスト</param>
 /// <param name="view">遷移先ビュー</param>
 public virtual void OnNavigateTo(ForwadingPluginContext context, object view)
 {
 }
Ejemplo n.º 7
0
 public override void OnNavigateFrom(ForwadingPluginContext context, object view)
 {
     context.Save(GetType(), GatherExportParameters(view));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 遷移先ビューイベント
 /// </summary>
 /// <param name="context">プラグインコンテキスト</param>
 /// <param name="view">遷移先ビュー</param>
 public virtual void OnNavigateTo(ForwadingPluginContext context, object view)
 {
 }
Ejemplo n.º 9
0
 public override void OnNavigateFrom(ForwadingPluginContext context, object view)
 {
     context.Save(GetType(), GatherExportParameters(view));
 }