1

我在 WP7 手机应用程序中使用 MVVM 架构。我当前的视图是一个用户控件,它存在于父页面(标准页面——不是独立的用户控件)中。我已将主页作为父级传递给用户控件的“父级”属性,并且我可以访问父级中的几乎任何控件。例如:这可以访问父级中的可锁定枢轴:

Dim p As LockablePivot
p = MyParent.FindControl("myLockablePivot")
If p IsNot Nothing Then
..do something with the pivot
End If

我的问题是访问父级中的 ApplicationBar 。这不起作用。我已经三次检查了分配给应用程序栏的 x:Name。(空引用异常):

    Dim ap As ApplicationBar
    ap = MyParent.FindName("appBar")

    ap.IsVisible = False

任何帮助,将不胜感激。

4

1 回答 1

3

我遇到了同样的问题,但正如奈杰尔在这个答案中指出的那样,

“ApplicationBar 不是标准的 Silverlight 对象,因为它并不真正适合可视化树,不能绑定到并且 x:Name 不起作用。”

事实证明,PhoneApplicationPage 类上有一个ApplicationBar属性。您可以使用它访问应用程序栏,然后从那里获取按钮或菜单项。

下面是我在页面构造函数中为文本本地化所做的 C# 示例:

public MyPage()
{
    InitializeComponent();

    (this.ApplicationBar.Buttons[0] as ApplicationBarIconButton).Text = AppResources.event_add_menu_item;
}

诚然,使用索引来定位项目然后不得不强制转换是不幸的,但至少它有效!

于 2011-11-23T22:10:10.967 回答