在xaml中创建应用程序栏,并在代码中操作它
本文关键字:代码 操作 xaml 创建 应用程序 | 更新日期: 2023-09-27 17:51:19
我正在学习开发Windows Phone (for Mango)应用程序。在全景页面中使用appbar时,我希望根据所选择的页面(如音乐+视频应用程序)更改菜单项和按钮文本等。
为此,我在xaml中创建了应用程序栏: <phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar x:Name="appbar" IsMenuEnabled="True" IsVisible="True">
<shell:ApplicationBarIconButton Text="Add" IconUri="/add.png" x:Name="btn" Click="Addbtn"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="Exit" x:Name="menuitem" Click="menubtn"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
然后,我尝试通过在全景页面的SelectionChanged
事件中通过其x:name
属性访问appbar来操纵控件:
private void PanoControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (PanoControl.SelectedIndex == 0)
appbar.IsMenuEnabled = false;
else if(PanoControl.SelectedIndex == 1)
menuitem.IsEnabled = false;
else if (PanoControl.SelectedIndex == 2)
{
appbar.IsVisible = true;
menuitem.IsEnabled = true;
}
}
当从一个全景页面移动到另一个全景页面时,会产生一个异常。请帮帮我。这可能吗?
而且,我是第一次在这里问问题。如果我错过了什么,请告诉我。
谢谢,Siddhant
通过页面的ApplicationBar属性访问应用程序栏项。它使操作变得繁琐。
private void PanoControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (PanoControl.SelectedIndex == 0)
this.ApplicationBar.IsVisible = false;
else if(PanoControl.SelectedIndex == 1)
((ApplicationBarMenuItem)ApplicationBar.MenuItems[0]).IsEnabled = false;
else if (PanoControl.SelectedIndex == 2)
{
this.ApplicationBar.IsVisible = false;
((ApplicationBarMenuItem)ApplicationBar.MenuItems[0]).IsEnabled = false;
}
}
社区已经开发了一些解决方案。一个是BindableApplicationBar,我不确定它是针对芒果还是Windows Phone 8的。这个项目是芒果特有的http://phone7.codeplex.com/
因为ApplicationBar是一个shell对象,你不能像其他XAML对象那样用名字引用它。它与您的页面相关联,因此您可以使用this.ApplicationBar
:
this.ApplicationBar.IsVisible = false;