我想在我的 WP7 应用程序中更改图标以及它们在代码中的作用。我已经在MainPage
构造函数中尝试过,MainPage_Loaded
但它说 ApplicationBar ( x:Name
) 一直为空。
由于我使用相同的页面和不同的状态,我该如何更改它?
我想在我的 WP7 应用程序中更改图标以及它们在代码中的作用。我已经在MainPage
构造函数中尝试过,MainPage_Loaded
但它说 ApplicationBar ( x:Name
) 一直为空。
由于我使用相同的页面和不同的状态,我该如何更改它?
尝试删除该x:Name
属性并使用Page.ApplicationBar访问它。
不幸的是,目前无法通过代码访问应用程序栏按钮。我遵循了官方 Mircosoft Training Kit for WP7 的一个示例来完成该任务。这是 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);
}
不幸的是,ApplicationBar不是 Silverlight 控件(不继承自UIElement);这意味着它不能通过其中x:Name
的按钮访问,但您可以使用ApplicationBar属性在页面内访问它!
查看此示例以了解如何从页面后面的代码创建和访问 ApplicationBar。
如果您愿意使用 MVVM 架构,您应该检查Cimbalino Windows Phone Toolkit中的 ApplicationBarBehaviour ,它将为您节省大量工作!