我想在我的WP7应用程序中更改图标以及它们在代码中的作用。我在MainPage
构造函数和MainPage_Loaded
中尝试过,但它说ApplicationBar(x:Name
)始终为null。
我如何更改它,因为我使用相同的页面和不同的状态?
答案 0 :(得分:1)
尝试删除x:Name
属性并使用Page.ApplicationBar访问它。
答案 1 :(得分:1)
不幸的是,目前无法通过代码访问应用栏按钮。我按照WP7官方Mircosoft培训套件中的一个示例来完成该任务。这是XAML和一些代码:
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar>
<shell:ApplicationBarIconButton IconUri="/icons/appbar.pin.png" IsEnabled="True" Text="Anpinnen" x:Name="appPinPage" Click="appPinPage_Click" />
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
请注意,ApplicationBar是PhoneApplicationPage的属性,因此您不必为您分配给PhoneApplicationPage的ApplicationBar属性的ApplicationBar对象指定显式名称。以下是更改上面的xaml代码中按钮图片的示例。该代码在PhoneApplicationPage的重写的OnNavigatedTo()方法中调用。
if (this.ViewModel.IsPinned())
{
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).Text = Resource1.txtUnpin;
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).IconUri = new Uri("/icons/appbar.unpin.png", UriKind.Relative);
}
else
{
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).Text = Resource1.txtPin;
((ApplicationBarIconButton)this.ApplicationBar.Buttons[0]).IconUri = new Uri("/icons/appbar.pin.png", UriKind.Relative);
}
答案 2 :(得分:1)
不幸的是,ApplicationBar不是Silverlight控件(不继承自UIElement);这意味着它无法使用x:Name
来访问它内部的按钮,但您可以使用ApplicationBar属性在页面内访问它!
检查this sample,了解如何从页面后面的代码创建和访问ApplicationBar。
如果你愿意使用MVVM架构,你应该从Cimbalino Windows Phone Toolkit检查ApplicationBarBehaviour,这将为你节省大量的工作!!!