更改应用栏中的按钮?

时间:2012-04-22 10:22:37

标签: c# windows-phone-7

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

我如何更改它,因为我使用相同的页面和不同的状态?

3 个答案:

答案 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,这将为你节省大量的工作!!!