2011/12/19
您可以使用 C# 或 Visual Basic 代码创建一个应用程序栏,以便为用户提供对应用程序最常见任务的快速访问。若要决定应该采用 XAML 还是采用代码创建应用程序栏,请参阅 Windows Phone 的应用程序栏概述。
下图显示了应用程序栏后在由用户展开后的示例。
![带有菜单项的已扩展应用程序栏 带有菜单项的已扩展应用程序栏](http://i.msdn.microsoft.com/dynimg/IC531092.png)
可以全部采用代码向应用程序中添加应用程序栏,而不编辑 XAML 文件。该过程假定您拥有一个包含一个页面的 Windows Phone 应用程序。在对应用程序栏上的图标按钮使用图像之前,必须首先将这些按钮添加到您的应用程序。有关更多信息,请参阅 Windows Phone 的应用程序栏图标按钮。
采用代码创建应用程序栏的步骤
-
在编辑器中打开您页面的代码隐藏文件。
-
在代码的顶部,添加以下语句。
using Microsoft.Phone.Shell;
-
在页面的构造函数中,在对 InitializeComponent 的调用之后,添加以下代码。该代码初始化新的 ApplicationBar 对象并将该对象分配给页面的 ApplicationBar属性。
ApplicationBar = new ApplicationBar();
-
设置所需的应用程序栏属性。有关属性的更多信息,请参阅 Windows Phone 的应用程序栏概述。
ApplicationBar.Mode = ApplicationBarMode.Default; ApplicationBar.Opacity = 1.0; ApplicationBar.IsVisible = true; ApplicationBar.IsMenuEnabled = true;
-
根据需要创建一个或多个 ApplicationBarIconButton 对象。设置图标图像和按钮文本,然后将它们添加到应用程序栏。如果您未设置按钮文本,则会发生运行时异常。
ApplicationBarIconButton button1 = new ApplicationBarIconButton(); button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative); button1.Text = "button 1"; ApplicationBar.Buttons.Add(button1);
-
菜单项是可选的。根据需要创建一个或多个 ApplicationBarMenuItem 对象。设置文本,然后将它们添加到应用程序栏。
ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem(); menuItem1.Text = "menu item 1"; ApplicationBar.MenuItems.Add(menuItem1);
-
下面是一个已完成的应用程序栏示例。在下面的过程中将添加单击事件和处理程序。
public MainPage() { InitializeComponent(); ApplicationBar = new ApplicationBar(); ApplicationBar.Mode = ApplicationBarMode.Default; ApplicationBar.Opacity = 1.0; ApplicationBar.IsVisible = true; ApplicationBar.IsMenuEnabled = true; ApplicationBarIconButton button1 = new ApplicationBarIconButton(); button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative); button1.Text = "button 1"; ApplicationBar.Buttons.Add(button1); ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem(); menuItem1.Text = "menu item 1"; ApplicationBar.MenuItems.Add(menuItem1); }
图标按钮和菜单项公开您可以采用代码处理的单击事件。
处理单击事件的步骤
-
在编辑器中打开您页面的代码隐藏文件。
-
对于每个图标按钮和菜单项,确定用户单击时要调用的事件。下面是来自上一过程的、确定了单击事件的应用程序栏的示例。
ApplicationBarIconButton button1 = new ApplicationBarIconButton(); button1.IconUri = new Uri("/Images/YourImage.png", UriKind.Relative); button1.Text = "button 1"; ApplicationBar.Buttons.Add(button1); button1.Click += new EventHandler(button1_Click); ApplicationBarMenuItem menuItem1 = new ApplicationBarMenuItem(); menuItem1.Text = "menu item 1"; ApplicationBar.MenuItems.Add(menuItem1); menuItem1.Click += new EventHandler(menuItem1_Click);
-
对于每个图标按钮和菜单项,添加用户单击时要调用的事件。在页面类中添加代码。下面是来自上一过程的应用程序栏的单击事件示例。
private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Button 1 works!"); //Do work for your application here. } private void menuItem1_Click(object sender, EventArgs e) { MessageBox.Show("Menu item 1 works!"); //Do work for your application here. }