ApplicationBar并不是页面视觉树的一部分,不能用通过为ApplicationBar设置x:Name属性值,而在代码后置文件里以此来访问该ApplicationBar,通常使用例如"this.ApplicationBar.IsVisible=true"这样的C#代码访问页面的ApplicationBar对象,ApplicationBar元素不要设置x:Name属性。
可以通过以下后台C#代码的方式来访问ApplicationBarIconButton元素:
this.ApplicationBar.Buttons[你的ApplicationBarIconButton索引值] as ApplicationBarIconButton
ApplicationBar是PhoneApplicationPage的属性,声明ApplicationBar的XAML代码如下:
1
2 <phone:PhoneApplicationPage.ApplicationBar>
3 <shell:ApplicationBar x:Name="appbar" IsVisible="True" IsMenuEnabled="True">
4 <shell:ApplicationBarIconButton x:Name="appbar_button1" IconUri="/Images/appbar_button1.png" Text="Button 1"/>
5 <shell:ApplicationBarIconButton x:Name="appbar_button2" IconUri="/Images/appbar_button2.png" Text="Button 2"/>
6 <shell:ApplicationBar.MenuItems>
7 <shell:ApplicationBarMenuItem x:Name="menuItem1" Text="MenuItem 1"/>
8 <shell:ApplicationBarMenuItem x:Name="menuItem2" Text="MenuItem 2"/>
9 shell:ApplicationBar.MenuItems>
10 shell:ApplicationBar>
11 phone:PhoneApplicationPage.ApplicationBar>
用C#代码可以这样访问:
1 using Microsoft.Phone.Shell;
2
3 namespace Demonstrate_BuildAction_Uri
4 {
5 public partial class MainPage : PhoneApplicationPage
6 {
7 // 构造函数
8 public MainPage()
9 {
10 InitializeComponent();
11 appbar = this.ApplicationBar as ApplicationBar;
12 appbar_button1 = this.ApplicationBar.Buttons[0] as ApplicationBarIconButton;
13 appbar_button2 = this.ApplicationBar.Buttons[1] as ApplicationBarIconButton;
14 }
15 }
16 }
上述代码中ApplicationBar有一个名为Buttons的Content属性集合,该集合内的ApplicationBarIconButton最多有4个;
跟ApplicationBar涉及的相关类有ApplicationBarIconButton和ApplicationBarMenuItem,这两个类位于Microsoft.Phone.Shell命名空间内,相关程序集为Microsoft.Phone;
ApplicationBar相关图片Build Action必须为Content,且图片来源必须是位于SDK中的dark文件夹内;注意该文件夹内的图片特点是透明背景白色前景图片;
ApplicationBar相关背景和前景颜色根据系统主题决定;
可以设置ApplicationBarIconButton的IsEnable属性值为false,以致该ApplicationBarIconButton失效;
ApplicationBar的Opacity属性设置该页面的ApplicationBar的背景透明度,建议0,0.5或1三个值,默认为1;