public override void Do(ActionArgs e)
        {
            Begin(e);
            ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs;

            if (precheckToDo(e))
            {
                if (!FacebookClient.Instance.IsUserLogedin())
                {
                    Deployment.Current.Dispatcher.BeginInvoke(() => {
                        LoginFacebookDialog dialog = new LoginFacebookDialog(arg.AppInfo);
                        dialog.OnComplete         += dialog_OnComplete;
                        arg.ParentLayout.Children.Add(dialog.Dialog);
                        dialog.show(0, 0);
                        _waiting.Add(dialog, arg);
                    });
                }
                else
                {
                    arg.IsCancelByLogedin = true;
                    Done(arg);
                }
            }
            else
            {
                Cancel(e);
            }
        }
        public override void Cancel(ActionArgs e)
        {
            ActionFacebookLoginArgs arg = e as ActionFacebookLoginArgs;

            if (arg != null)
            {
                try {
                    LoginFacebookDialog dialog = _waiting.FirstOrDefault(x => x.Value == arg).Key;
                    arg.ParentLayout.Children.Remove(dialog.Dialog);
                    arg.Result = null;
                } catch (Exception ex) {
                    //throw ex;
                }
            }
            else
            {
                Exception ex = new Exception("Facebook login dialog error");
                //throw ex;
            }
            base.Cancel(e);
        }
        void dialog_OnComplete(object sender, LoginFacebookDialogCompleteArgs e)
        {
            LoginFacebookDialog dialog = sender as LoginFacebookDialog;

            if (dialog != null)
            {
                try {
                    ActionFacebookLoginArgs arg = _waiting[dialog];
                    arg.ParentLayout.Children.Remove(dialog.Dialog);
                    arg.Result = e;
                    Done(arg);
                } catch (Exception ex) {
                    //throw ex;
                }
            }
            else
            {
                Exception ex = new Exception("Facebook login dialog error");
                //throw ex;
            }
        }