0

我想在我的 WP7 应用程序中更改图标以及它们在代码中的作用。我已经在MainPage构造函数中尝试过,MainPage_Loaded但它说 ApplicationBar ( x:Name) 一直为空。

由于我使用相同的页面和不同的状态,我该如何更改它?

4

3 回答 3

1

尝试删除该x:Name属性并使用Page.ApplicationBar访问它。

于 2012-04-22T10:36:29.503 回答
1

不幸的是,目前无法通过代码访问应用程序栏按钮。我遵循了官方 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);
        }
于 2012-04-22T11:14:44.580 回答
1

不幸的是,ApplicationBar不是 Silverlight 控件(不继承自UIElement);这意味着它不能通过其中x:Name的按钮访问,但您可以使用ApplicationBar属性在页面内访问它!

查看此示例以了解如何从页面后面的代码创建和访问 ApplicationBar。

如果您愿意使用 MVVM 架构,您应该检查Cimbalino Windows Phone Toolkit中的 ApplicationBarBehaviour ,它将为您节省大量工作!

于 2012-04-22T11:47:47.020 回答