async public override Task<LayoutAwarePage> CreateGame(GameInfomation gameInfomation, Frame targetFrame)
        {

            TradeGameData_Model.ExchangeViewType = typeof(Exchange);
            TradeGameData_Model.SetupGameViewType = typeof(SetupGame);
            TradeGameData_Model vm;
            var storage = new Storages.Storage<TradeGameData_Model>(GetSaveFileName(gameInfomation));

            await storage.Refresh();

            if (storage.Value == null)
            {
                storage.Value = new TradeGameData_Model(storage, gameInfomation);
            }
            vm = storage.Value;
            
            
            EventRouter.Instance.InitFrameNavigator(ref targetFrame);

            var navigator = vm.Navigator = targetFrame.GetFrameNavigator();
            
            navigator.PageInitActions
                = new Dictionary<Type, Action<LayoutAwarePage, IDictionary<string, object>>> 
                {
                    {
                        typeof (SetupGame),
                        (p,dic)=>
                            {
                                var svm = new SetupGame_Model(vm);
                                p.DefaultViewModel = svm;
                            }

                    },
                               
                    {
                        typeof (Exchange),
                        (p,dic)=>
                            {
                                var svm = new SetupGame_Model(vm);
                                p.DefaultViewModel = svm;
                            
                            }

                    },

                     {
                        typeof (ScoreBoard),
                        (p,dic)=>
                            {
                                var svm = new ScoreBoard_Model(vm);
                                p.DefaultViewModel = svm;
                            
                            }

                    },
                };




            var rval = new DefaultTradeGame.Views.TradeGamePage() { DefaultViewModel = vm };
            return rval;

        }
        async public override Task<LayoutAwarePage> CreateGameAndNavigateTo(GameInfomation gameInfomation, Frame targetFrame)
        {


            TradeGamePage_Model vm;
            var storage = new Storage<TradeGameData>(GetSaveFileName(gameInfomation));

            await storage.Refresh();


            vm = new TradeGamePage_Model(storage, gameInfomation);


            EventRouter.Instance.InitFrameNavigator(ref targetFrame);

            var navigator = vm.Navigator = targetFrame.GetFrameNavigator();

            navigator.PageInitActions
                = new Dictionary<Type, Action<LayoutAwarePage, IDictionary<string, object>>> 
                {
                    {
                        typeof (SetupGame),
                        (p,dic)=>
                            {
                                var svm = new SetupGame_Model(vm.GameData);
                                p.DefaultViewModel = svm;
                            }

                    },
                               
                    {
                        typeof (Exchange),
                        (p,dic)=>
                            {
                                var svm = new SetupGame_Model(vm.GameData);
                                p.DefaultViewModel = svm;
                            
                            }

                    },

                     {
                        typeof (ScoreBoard),
                        (p,dic)=>
                            {
                                var svm = new ScoreBoard_Model(vm.GameData);
                                p.DefaultViewModel = svm;
                            
                            }

                    },

                    {
                        typeof (TradeGamePage),
                        (p,dic)=>
                            {
                               
                                p.DefaultViewModel = vm;
                                vm.CommandOnLoadCommand.Execute(null);
                            }

                    },
                };


            await navigator.FrameNavigate(Views.ViewModels.TradeGamePage_Model.TradeGamePageViewType, vm, null);



            return targetFrame.Content as LayoutAwarePage;

        }