我正在学习在Windows Phone(Mango)中开发应用程序。在Panorama页面中使用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>
然后,我尝试通过全景页面x:name
事件中SelectionChanged
属性访问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
答案 0 :(得分:2)
通过页面的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,我不确定它是用于Mango还是Windows Phone 8.这个项目是Mango特定的http://phone7.codeplex.com/
答案 1 :(得分:1)
因为 ApplicationBar 是一个shell对象,所以不能像任何其他XAML对象一样引用它。它与您的网页相关联,因此您可以使用this.ApplicationBar
:
this.ApplicationBar.IsVisible = false;