Пример #1
0
 public async Task PushAsync(Xamarin.Forms.Page page)
 {
     if (App.Navigation != null)
     {
         await App.Navigation.PushAsync(page);
     }
 }
Пример #2
0
        public void CollectUnhandleExceptionV2
        (
            string errorMsg,
            DL.Model.User u,
            Xamarin.Forms.Page page = null,
            Action <string> handle  = null
        )
        {
            Uri uri = Common.StaticInfo.AppWebSetting.GetUri();

            // 方法名
            string methodName = "CollectUnhandleException";

            // 方法参数
            List <string> args = new List <string>();

            args.Add(Util.JsonUtils.SerializeObject(errorMsg));
            args.Add(Util.JsonUtils.SerializeObject(u));


            Util.WebService.RequestData requestData = new Util.WebService.RequestData();
            requestData.MethodName = methodName;
            requestData.JsonArgs   = args;

            new WebServiceBase().ExecuteV2(uri, requestData, page, handle);
        }
        /// <summary>
        /// Track the Page in AppCenter Analytics
        /// </summary>
        /// <param name="page">Page to track</param>
        /// <param name="duration">
        /// Duration spent on the screen.
        /// This can be calculated by starting a Stopwatch upon OnAppearing and stopping it upon OnDisappearing
        /// </param>
        /// <param name="analytics">Keep this as NULL to use the default implementation. This is only exposed for unit testing purposes</param>
        public static void TrackPage(this Page page, TimeSpan duration, IAnalytics analytics = null)
        {
            var properties = new Dictionary <string, string>
            {
                [nameof(Page.Title)] = page.Title,
                [DurationKey]        = duration.TotalSeconds.ToString(CultureInfo.InvariantCulture)
            };

            foreach (var additionalTrackingInfo in AdditionalTrackingInfo)
            {
                if (properties.ContainsKey(additionalTrackingInfo.Key))
                {
                    properties[additionalTrackingInfo.Key] = additionalTrackingInfo.Value;
                }
                else
                {
                    properties.Add(additionalTrackingInfo.Key, additionalTrackingInfo.Value);
                }
            }

            (analytics ?? AppCenterAnalytics.Instance)
            .TrackEvent(
                page.GetType().Name.ToTrackingEventName(),
                properties);
        }
Пример #4
0
        public BaseNavigationPage(Xamarin.Forms.Page root) : base(root)
        {
            BarTextColor       = ColorConstants.BarTextColor;
            BarBackgroundColor = ColorConstants.BarBackgroundColor;

            On <iOS>().SetPrefersLargeTitles(true);
        }
Пример #5
0
        public BaseNavigationPage(Xamarin.Forms.Page root) : base(root)
        {
            On <iOS>().SetPrefersLargeTitles(true);

            BarBackgroundColor = Xamarin.Forms.Color.FromHex("765824");
            BarTextColor       = Xamarin.Forms.Color.White;
        }
Пример #6
0
        public SelectedViewModel(Xamarin.Forms.Page _element, Action Recalc, Action RecalcPaidPrice, Xamarin.Forms.StackLayout spSelectedList, Xamarin.Forms.ControlTemplate ctSelectedControlTemplate, Xamarin.Forms.StackLayout spRequestList, Xamarin.Forms.ControlTemplate ctRequestControlTemplate, Xamarin.Forms.StackLayout spBalanceList, Xamarin.Forms.ControlTemplate ctBalanceControlTemplate)
        {
            this._element = _element;


            this._spSelectedList            = spSelectedList;
            this._ctSelectedControlTemplate = ctSelectedControlTemplate;

            // 列表变化时重置一下编号
            CurrentSelectedList.CollectionChanged += (sender, args) =>
            {
                ResetNo();
            };
            RequestView     = new RequestViewModel(null, this, spRequestList, ctRequestControlTemplate);
            ChangeCountView = new ChangeCountViewModel(null, this, Recalc);
            ChangePriceView = new ChangePriceViewModel(null, this, Recalc);


            ChangePaidPriceView = new ChangePaidPriceViewModel(null, RecalcPaidPrice, spBalanceList, ctBalanceControlTemplate);
            ChangeTimeView      = new ChangeTimeViewModel(null, this, Recalc);



            foreach (var item in Res.Instance.AllLangList.OrderBy(x => x.Value.LangOrder))
            {
                Dict dict = new Dict()
                {
                    Name = Res.Instance.GetString("LangName", item.Value.Culture), Value = item.Value.LangIndex
                };
                AllLang.Add(dict);
            }
        }
Пример #7
0
        public void TestWebService_GetOrders_isCompress_False
        (
            List <DL.Model.Order> orders,
            DL.Model.User u,
            Xamarin.Forms.Page page = null,
            Action <Util.WebService.SOAPResult> handle = null
        )
        {
            Uri uri = Common.StaticInfo.AppWebSetting.GetUri();

            // 方法名
            string methodName = "TestWebService_GetOrders";

            // 方法参数
            List <string> args = new List <string>();

            args.Add(Util.JsonUtils.SerializeObject(orders));

            Util.WebService.RequestData requestData = new Util.WebService.RequestData();
            requestData.MethodName = methodName;
            requestData.JsonArgs   = args;

            new WebServiceBase().Execute
            (
                uri: uri,
                requestData: requestData,
                page: page,
                handle: handle,
                isCompress: false,
                isEncrypt: false
            );
        }
Пример #8
0
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            Control.Tapped += Control_Tapped;
            _prevPage       = Control.SelectedItem as Xamarin.Forms.Page;
        }
Пример #9
0
 public override void ApplyPageBehaviors(Xamarin.Forms.Page page)
 {
     base.ApplyPageBehaviors(page);
     if (page is PopupPage popupPage)
     {
         popupPage.Behaviors.Add(new BackgroundPopupDismissalBehavior(_popupNavigation, _applicationProvider));
     }
 }
Пример #10
0
        public static void SetModalPagePresentationStyle(this XFPage page, MvxFormsModalPresentationStyle presentationStyle)
        {
            if (page == null)
            {
                throw new ArgumentNullException(nameof(page));
            }

            page.On <iOS>().SetModalPresentationStyle((UIModalPresentationStyle)presentationStyle);
        }
 private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
 {
     this.DataContextChanged -= OnDataContextChanged;
     if (this.DataContext is Page page)
     {
         _tab = page.GetPageWithBadge();
         _tab.PropertyChanged += BindableObjectOnPropertyChanged;
     }
 }
Пример #12
0
        public BaseNavigationPage(Xamarin.Forms.Page root) : base(root)
        {
            SetDynamicResource(BarTextColorProperty, nameof(BaseTheme.NavigationBarTextColor));
            SetDynamicResource(BackgroundColorProperty, nameof(BaseTheme.PageBackgroundColor));
            SetDynamicResource(BarBackgroundColorProperty, nameof(BaseTheme.NavigationBarBackgroundColor));

            On <iOS>().SetPrefersLargeTitles(true);
            On <iOS>().SetModalPresentationStyle(UIModalPresentationStyle.FormSheet);
        }
Пример #13
0
        public static void SetPage(this System.Windows.Window window, Xamarin.Forms.Page page)
        {
            window.Content = RendererFactory.Create(page);
            var titleBinding = new System.Windows.Data.Binding(Page.TitleProperty.PropertyName)
            {
                Source = page
            };

            window.SetBinding(System.Windows.Window.TitleProperty, titleBinding);
        }
Пример #14
0
 void AddRenderers(Xamarin.Forms.Page page, IList <Action <SKCanvas, int, int> > renderChildren)
 {
     foreach (var child in page.InternalChildren)
     {
         if (child is Xamarin.Forms.Label)
         {
             renderChildren.Add((canvas, width, height) => new Skixam.Forms.Renderers.LabelRenderer().Render((Xamarin.Forms.Label)child, _canvas, _size));
         }
     }
 }
Пример #15
0
        /// <summary>
        /// 重新加载页
        /// </summary>
        /// <param name="_element"></param>
        /// <param name="spProductTypeList"></param>
        internal void ReLoadProductsViewModel(Xamarin.Forms.Page _element, Xamarin.Forms.StackLayout spProductTypeList)
        {
            this._element           = _element;
            this._spProductTypeList = spProductTypeList;

            // 重新打开产品类型
            foreach (var item in ProductTypeList)
            {
                AddProductTypeItem(item);
            }
        }
Пример #16
0
        private void HandleReselect(FrameworkElement frameworkElement)
        {
            var newPage = frameworkElement.DataContext as Xamarin.Forms.Page;

            if (newPage == _prevPage)
            {
                var mainPage = Element as TabReselectDemo.MainPage;
                mainPage.NotifyTabReselected();
            }

            _prevPage = newPage;
        }
Пример #17
0
 /// <summary>
 /// Sprawdza czy dane sa w porzadku
 /// </summary>
 /// <param name="page">Strona na ktorej jest wyswietlany komunikat o bledzie</param>
 private void checkifNormOK(Xamarin.Forms.Page page)
 {
     for (int i = 0; i < min_Norm.Count(); i++)
     {
         //Dla kazdego elementu sprawdz czy wartosc minalna jest mniejsza niz maksymalna
         if (min_Norm[i] > max_Norm[i])
         {
             //Jezeli jest zle pokaz komunikat
             page.DisplayAlert("Warning!", "W " + (i + 1).ToString() + " pierwiastku norma minimalna jest większa od maksymalnej.", "Zrozumiałem");
         }
     }
 }
Пример #18
0
 private void Control_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
 {
     if (e.OriginalSource is TextBlock src && src.Name == "TabbedPageHeaderTextBlock")
     {
         var newPage = src.DataContext as Xamarin.Forms.Page;
         if (newPage == prevPage)
         {
             (Element as TabbedPageEx).OnTabReselected();
         }
         prevPage = newPage;
     }
 }
        public async Task LoginAsync(Xamarin.Forms.Page page)
        {
            string resourceToken = null;
            var    tcs           = new TaskCompletionSource <bool> ();

#if __IOS__
            var controller = UIKit.UIApplication.SharedApplication.KeyWindow.RootViewController;
#endif
            try {
                var auth = new Xamarin.Auth.WebRedirectAuthenticator(
                    initialUrl: new Uri(resourceTokenBrokerURL + "/.auth/login/facebook"),
                    redirectUrl: new Uri(resourceTokenBrokerURL + "/.auth/login/done"));

                auth.Completed += async(sender, e) => {
                    if (e.IsAuthenticated && e.Account.Properties.ContainsKey("token"))
                    {
#if __IOS__
                        controller.DismissViewController(true, null);
#endif
                        var easyAuthResponseJson = JsonConvert.DeserializeObject <JObject> (e.Account.Properties ["token"]);
                        var easyAuthToken        = easyAuthResponseJson.GetValue("authenticationToken").ToString();

                        //call ResourceBroker to get the DocumentDB resource token
                        var http = new HttpClient();
                        http.DefaultRequestHeaders.Add("x-zumo-auth", easyAuthToken);
                        var resourceTokenResponse = await http.GetAsync(resourceTokenBrokerURL + "/api/resourcetoken/");

                        var resourceTokenJson = JsonConvert.DeserializeObject <JObject> (await resourceTokenResponse.Content.ReadAsStringAsync());
                        resourceToken = resourceTokenJson.GetValue("token").ToString();
                        UserId        = resourceTokenJson.GetValue("userid").ToString();

                        if (resourceToken == null)
                        {
                            return;                                                // failed to login
                        }
                        Client = new DocumentClient(new System.Uri(accountURL), resourceToken);

                        tcs.SetResult(true);
                    }
                };
#if __IOS__
                controller.PresentViewController(auth.GetUI(), true, null);
#else
                Xamarin.Forms.Forms.Context.StartActivity(auth.GetUI(Xamarin.Forms.Forms.Context));
#endif
            }
            catch (Exception ex) {
                Console.Error.WriteLine(@"ERROR Login {0}", ex.Message);
            }

            await tcs.Task;
        }
Пример #20
0
        public BaseNavigationPage(Xamarin.Forms.Page root) : base(root)
        {
            //Set Default Values for Navigation Bar Colors
            //These default values will be overridden by the Resource Dictionary when the theme changes
            BarBackgroundColor = Xamarin.Forms.Color.FromHex("1FAECE");
            BarTextColor       = Xamarin.Forms.Color.White;

            SetDynamicResource(BarBackgroundColorProperty, nameof(BaseTheme.NavigationBarBackgroundColor));
            SetDynamicResource(BarTextColorProperty, nameof(BaseTheme.NavigationBarTextColor));
            SetDynamicResource(BackgroundColorProperty, nameof(BaseTheme.PageBackgroundColor));

            On <iOS>().SetPrefersLargeTitles(true);
        }
Пример #21
0
        /// <summary>
        /// Sprawdzenie czy suma wszystkich pierwiastkow nie jest większa niż 100%
        /// </summary>
        /// <param name="page">Strona na ktorej pojawi się ewentualny komunikat o błędzie</param>
        private void checkIfOK(Xamarin.Forms.Page page)
        {
            double suma = 0;

            foreach (double x in tabOfElements)
            {
                suma = suma + x;
            }
            if (suma > 100)
            {
                page.DisplayAlert("Warning!", "Suma procentowa wszystkich elementów przekracza 100%", "Zrozumialem");
            }
        }
Пример #22
0
        /// <summary>
        /// Funkcja tworzacy produkt metal z wypelnionymi danymi ktore pobiera z pol tekstowych
        /// </summary>
        /// <param name="page">Strona na ktorej moze sie pojawic error</param>
        /// <param name="name">nazwa produktu</param>
        /// <param name="price">cena produktu</param>
        /// <param name="fe">zawartosc zelaza w produkcie</param>
        /// <param name="c">zawartosc wegla w produkcie</param>
        /// <param name="si">zawartosc krzemu w produkcie</param>
        /// <param name="mn">zawartosc manganu</param>
        /// <param name="p">zawartosc fosforu w produkcie</param>
        /// <param name="s"></param>
        /// <param name="cr"></param>
        /// <param name="mo"></param>
        /// <param name="ni"></param>
        /// <param name="al">zawartosc aluminium w produkcie</param>
        /// <param name="co"></param>
        /// <param name="cu">zawartosc miedzi w produkcie</param>
        /// <param name="nb"></param>
        /// <param name="ti"></param>
        /// <param name="v"></param>
        /// <param name="w"></param>
        /// <param name="pb">zawartosc olowiu w produkcie</param>
        /// <returns>Gotowy metal z wypelnionymi danymi</returns>
        public static Alloy addNewAlloy(Xamarin.Forms.Page page, string name, string price, string fe, string c, string si, string mn, string p, string s, string cr, string mo, string ni, string al, string co, string cu, string nb, string ti, string v, string w, string pb, string sn, string b, string ca, string zr, string aas, string bi, string sb, string zn, string mg, string n, string h, string o)
        {
            Alloy metal = new Alloy();

            //parsuj najwazniejsze dane
            try
            {
                metal.name  = name;
                metal.Price = metal.parseThatValue(page, price);

                //parsuj dane skladnikow
                metal.Fe = metal.parseThatValue(page, fe);
                metal.C  = metal.parseThatValue(page, c);
                metal.Si = metal.parseThatValue(page, si);
                metal.Mn = metal.parseThatValue(page, mn);
                metal.P  = metal.parseThatValue(page, p);
                metal.S  = metal.parseThatValue(page, s);
                metal.Cr = metal.parseThatValue(page, cr);
                metal.Mo = metal.parseThatValue(page, mo);
                metal.Ni = metal.parseThatValue(page, ni);
                metal.Al = metal.parseThatValue(page, al);
                metal.Co = metal.parseThatValue(page, co);
                metal.Cu = metal.parseThatValue(page, cu);
                metal.Nb = metal.parseThatValue(page, nb);
                metal.Ti = metal.parseThatValue(page, ti);
                metal.V  = metal.parseThatValue(page, v);
                metal.W  = metal.parseThatValue(page, w);
                metal.Pb = metal.parseThatValue(page, pb);
                metal.Sn = metal.parseThatValue(page, sn);
                metal.B  = metal.parseThatValue(page, b);
                metal.Ca = metal.parseThatValue(page, ca);
                metal.Zr = metal.parseThatValue(page, zr);
                metal.As = metal.parseThatValue(page, aas);
                metal.Bi = metal.parseThatValue(page, bi);
                metal.Sb = metal.parseThatValue(page, sb);
                metal.Zn = metal.parseThatValue(page, zn);
                metal.Mg = metal.parseThatValue(page, mg);
                metal.N  = metal.parseThatValue(page, n);
                metal.H  = metal.parseThatValue(page, h);
                metal.O  = metal.parseThatValue(page, o);

                metal.createTabOfElements(metal);      //Wszystkie pierwiastki leca do tablicy
                metal.checkIfOK(page);                 //Sprawdzam czy suma wszystkich stopow nie przekaracza 100%
            }
            catch (Exception ex)
            {
                page.DisplayAlert("Dziwny error", ex.ToString(), "OK");
            }

            return(metal);
        }
Пример #23
0
        public void RemoveStackPages(Xamarin.Forms.Page exceptedPage = null)
        {
            var existingPages = App.Navigation.NavigationStack.ToList();

            foreach (var page in existingPages)
            {
                if (page != null && page == exceptedPage)
                {
                    continue;
                }

                App.Navigation.RemovePage(page);
            }
        }
Пример #24
0
        public TitleViewPage(EvasObject parent, Xamarin.Forms.Page page, View titleView) : base(parent)
        {
            _page      = Platform.GetOrCreateRenderer(page).NativeView as Native.Page;
            _titleView = titleView;
            if (_titleView != null)
            {
                var renderer = Platform.GetOrCreateRenderer(_titleView);
                (renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();

                this.PackEnd(renderer.NativeView);
            }
            this.PackEnd(_page);
            this.LayoutUpdated += OnLayoutUpdated;
        }
 private void Control_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
 {
     if (e.OriginalSource is Windows.UI.Xaml.FrameworkElement src &&
         (src.Name == "TabbedPageHeaderTextBlock" || src.Name == "TabbedPageHeaderImage") &&
         Element is Tatoeba.Mobile.Views.MainPage)
     {
         var newPage = src.DataContext as Xamarin.Forms.Page;
         if (newPage == _prevPage)
         {
             var page = Element as Tatoeba.Mobile.Views.MainPage;
             page.CurrentPage.Navigation.PopToRootAsync();
         }
         _prevPage = newPage;
     }
 }
Пример #26
0
        public ProductsViewModel(Xamarin.Forms.Page _element, Xamarin.Forms.StackLayout spProductTypeList, Xamarin.Forms.StackLayout spProductList, Xamarin.Forms.ControlTemplate ctProductControlTemplate, bool IsImport = false)
        {
            this._element           = _element;
            this._spProductTypeList = spProductTypeList;
            Notification.Instance.NotificationLanguage += (obj, value, args) => { Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { SetCurrentName(); }); };
            this.IsImport = IsImport;

            this._spProductList            = spProductList;
            this._ctProductControlTemplate = ctProductControlTemplate;

            // 设置语言
            SetCurrentName();

            InitialProductType();
        }
Пример #27
0
        private void Control_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
        {
            var src = e.OriginalSource as TextBlock;

            if (src != null && src.Name == "TabbedPageHeaderTextBlock" && Element is TabReselectDemo.MainPage)
            {
                var newPage = src.DataContext as Xamarin.Forms.Page;
                if (newPage == _prevPage)
                {
                    var page = Element as TabReselectDemo.MainPage;
                    page.NotifyTabReselected();
                }
                _prevPage = newPage;
            }
        }
Пример #28
0
        public override void OnBackPressed()
        {
            Xamarin.Forms.Page page = Xamarin.Forms.Application
                                      .Current.MainPage
                                      .Navigation.NavigationStack
                                      .LastOrDefault();

            if (page is MainPage mainPage)
            {
                mainPage.OnBackPressed();
            }
            else
            {
                base.OnBackPressed();
            }
        }
Пример #29
0
        public static async Task <bool> TestInternet(Xamarin.Forms.Page whosAsking)
        {
            try {
                if (!await HasInternet())
                {
                    await whosAsking.DisplayAlert("Fehler", "Wir konnten keine Verbindung mit dem Server herstellen", "Schade");

                    return(false);
                }
            }
            catch {
                await whosAsking.DisplayAlert("Fehler", "Wir konnten keine Verbindung mit dem Server herstellen", "Schade");

                return(false);
            }
            return(true);
        }
Пример #30
0
        void InternalSetPage(Xamarin.Forms.Page page)
        {
            IList <Action <SKCanvas, int, int> > renderChildren = new List <Action <SKCanvas, int, int> >();

            _layout.AddView(new NativeSkiaView(this, new SkiaView((canvas, w, h) =>
            {
                canvas.Clear(SKColors.White);
                _canvas = canvas;
                _size   = new Xamarin.Forms.Size(w, h);
                foreach (var renderer in renderChildren)
                {
                    renderer(canvas, w, h);
                }
            })));

            _layout.BringToFront();

            AddRenderers(page, renderChildren);
        }