在Windows Phone 8 PhoneGap应用程序中动态创建应用程序栏

本文关键字:应用程序 动态 创建 PhoneGap Windows Phone | 更新日期: 2023-09-27 18:28:30

我正在开发Windows Phone 8 PhoneGap应用程序。我希望应用程序栏是动态创建的,这样它在初始页面中就不可见,并且在登录页面中也不会有"注销"菜单项。我有一个想法,通过获取网络视图的当前URL并相应地显示应用程序栏来实现这一点。因此,我想知道如何获取PhoneGap网络视图的当前URL,并相应地创建应用程序栏。我已经通过了http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394044(v=vs.105).aspx

在Windows Phone 8 PhoneGap应用程序中动态创建应用程序栏

我通过this.CordovaView.Browser.Navigated += Browser_Navigated;处理事件实现了目标,其中Browser_Navigated函数如下。

private void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            Console.WriteLine("Browser_Navigated:" + sender);
            String currentURL = "";
            Boolean isAbsolute = this.CordovaView.Browser.Source.IsAbsoluteUri;
            ApplicationBar = new ApplicationBar();
            ApplicationBar.Mode =ApplicationBarMode.Minimized;
            if (isAbsolute)
            {
                currentURL = this.CordovaView.Browser.Source.AbsoluteUri;

                ApplicationBarMenuItem clearCache = new ApplicationBarMenuItem();
                clearCache.Text = "Reset user settings";
                ApplicationBar.MenuItems.Add(clearCache);
                clearCache.Click += new EventHandler(OnClearCache);
                if (! currentURL.EndsWith("LoginSP.aspx")) 
                {
                    ApplicationBarMenuItem logOut = new ApplicationBarMenuItem();
                    logOut.Text = "Log out";
                    ApplicationBar.MenuItems.Add(logOut);
                    logOut.Click += new EventHandler(OnLogOut);
                }
            }
            else
            {
                currentURL = "x-wmapp1:" + this.CordovaView.Browser.Source.OriginalString;
                ApplicationBar.IsVisible = false;
            }
            Console.WriteLine("currentURL:" + currentURL);
        }

参考:https://github.com/dev-mobile/cordova-starter/blob/master/win7_cordova_starter/wp7_CordovaStarter/MainPage.xaml.cs

URI currentURI = ((App)Application.Current).RootFrame.CurrentSource;

应该返回当前视图的url。这应该放在发生导航的函数中,以便在每次更改页面时调用。然后,您可以使用特定于URI类的toString()函数将其转换为字符串,并查看它是否与您要查找的页面url匹配。如果是,则动态调整应用程序栏。考虑到你已经浏览了给出的链接,我假设你已经知道如何做到这一点,但如果你不这样做,请发表评论。