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

时间:2013-08-22 06:10:36

标签: c# windows-phone-8 cordova appbar

我正在开发Windows Phone 8 PhoneGap应用。我希望动态创建App Bar,使其在初始页面中不可见,并且在登录页面中不会有菜单项“LogOut”。我想通过获取webview的当前URL并相应地显示应用栏来实现这一目标。所以,我想知道如何获取PhoneGap webview的当前URL并相应地创建应用栏。我已经通过了http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394044(v=vs.105).aspx

2 个答案:

答案 0 :(得分:1)

我通过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

答案 1 :(得分:0)

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

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