Windows Phone 7 如何?應用程式欄

來源:互聯網
上載者:User

      WindowS Phone 7取消了之前的菜單系統,而是通過應用程式欄的形式實現不同程式,功能之間的切換。

      每一個應用程式欄最多支援顯示4個應用程式(4個表徵圖)。

      windows phone 應用程式欄(ApplicationBar)有兩種添加方式。一種是通過C#代碼添加,還有一種是通過XAML產生應用程式欄。

通過C#代碼可以實現應用程式欄的國際化(即實現手機不同語言的切換).而通過XAML產生的應用程式欄是不能實現不同語言的切換功能。這是由於ApplicationBar不是Silverlight的控制項,所以ApplicationBar不支援資料繫結。任何資料繫結的目標都必須是自繼承自FrameWorkElement這個類。因此無法通過資料繫結來實現國際化和本地化。只能通過c#代碼產生ApplicationBar,然後實現國際化和本地化的功能。

具體的方法步驟:

1.通過XAML產生應用程式欄

在xaml頁面會自動的產生一下代碼,預設情況下的這段代碼是被注釋掉的。

 <!--<phone:PhoneApplicationPage.ApplicationBar>        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>            <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>            <shell:ApplicationBar.MenuItems>                <shell:ApplicationBarMenuItem Text="MenuItem 1"/>                <shell:ApplicationBarMenuItem Text="MenuItem 2"/>            </shell:ApplicationBar.MenuItems>        </shell:ApplicationBar>    </phone:PhoneApplicationPage.ApplicationBar>-->

以上這一段表是聲明了一個ApplicationBar,並且添加了兩個Button按鈕和兩個MenuItem.所以如果要增加ApplicationBar,只要把以上代碼的注釋去掉即可。

說明:ApplicationBarIconButton 表示聲明的是一個Button,IconUri表示按鈕表徵圖所在的路徑,Text表示按鈕顯示的名稱

ApplicationBarMenuItem 表示聲明的是一個MenuItem(功能表項目),Text表示功能表項目的名稱。

我們將上面的代碼修改如下:

<phone:PhoneApplicationPage.ApplicationBar>        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" Opacity="0.5">            <shell:ApplicationBarIconButton x:Name="VideoButton" IconUri="/icons/appbar.feature.video.rest.png" Text="視頻" Click="VideoButton_Click"/>            <shell:ApplicationBarIconButton x:Name="WebBrowserButton" IconUri="/icons/appbar.feature.search.rest.png" Text="瀏覽器" Click="WebBrowserButton_Click"/>            <shell:ApplicationBar.MenuItems>                <shell:ApplicationBarMenuItem x:Name="EbookButtom" Text="電子書" Click="EbookButtom_Click"/>                <shell:ApplicationBarMenuItem x:Name="MusicButton" Text="音樂" Click="MusicButton_Click"/>            </shell:ApplicationBar.MenuItems>        </shell:ApplicationBar>    </phone:PhoneApplicationPage.ApplicationBar>

此外還可以通過Expression Blend來設計Applicationbar。

運行程式點擊(...)會快顯功能表項,如所示。

功能表項目視圖:

為應用程式欄,我們值放入了2個表徵圖。最多可以放4個。

2.通過C#代碼來實現應用程式欄

首先需要添加下面這個命名空間:

using Microsoft.Phone.Shell;

之後在頁面的建構函式中添加如下代碼:

 ApplicationBar = new ApplicationBar();//聲明一個ApplicationBar             ApplicationBar.IsVisible = true;//設定應用程式欄可見            ApplicationBar.IsMenuEnabled = true;//設定功能表項目可用            ApplicationBarIconButton button1 = new ApplicationBarIconButton(new Uri("/icons/appbar.feature.video.rest.png", UriKind.Relative));//聲明一個Button,並設定其表徵圖路勁。            button1.Text = "Video";//表徵圖顯示的名稱為Video            button1.Click += new EventHandler(button1_Click);//註冊Click事件            ApplicationBarIconButton button2 = new ApplicationBarIconButton(new Uri("/icons/appbar.feature.search.rest.png", UriKind.Relative));            button2.Text = "Search";            button2.Click += new EventHandler(button2_Click);            ApplicationBar.Buttons.Add(button1);//將Button添加到應用程式欄中,這樣便可以使用該Button了。            ApplicationBar.Buttons.Add(button2);ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem("電子書");//聲明一個MenuItem項,並設定顯示文字為電子書            ApplicationBarMenuItem menuItem2 = new ApplicationBarMenuItem("音樂");            menuItem1.Click += new EventHandler(menuItem1_Click);//註冊MenuItem項的Click事件            menuItem2.Click += new EventHandler(menuItem2_Click);            ApplicationBar.MenuItems.Add(menuItem1);//將MenuItem添加到功能表列中,這樣便可以使用該MenuItem了。            ApplicationBar.MenuItems.Add(menuItem2);

以上代碼添加成功後,還需要實現每一個Button和MenuItem項的Click響應函數,在註冊每一個Click事件的時候雙擊TAB鍵會自動的添加Click響應函數,如下所示:

  void menuItem2_Click(object sender, EventArgs e)        {            NavigationService.Navigate(new Uri("Musics", UriKind.Relative));//這段代碼是自己編寫的,下同。        }        void menuItem1_Click(object sender, EventArgs e)        {            NavigationService.Navigate(new Uri("Ebook", UriKind.Relative));        }        void button2_Click(object sender, EventArgs e)        {            NavigationService.Navigate(new Uri("SurferInternet", UriKind.Relative));        }        void button1_Click(object sender, EventArgs e)        {            NavigationService.Navigate(new Uri("Movies", UriKind.Relative));        }

這樣便實現了通過C#代碼的方式自己添加應用程式欄和功能表列,並通過增加Click事件實現單擊時導航到不同的頁面。

最終的視圖結果同上。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.