Получить панель приложений от родителей - Windows Phone - PullRequest
1 голос
/ 22 октября 2011

Я использую архитектуру MVVM в приложении для телефона WP7.Мой текущий вид - это пользовательский элемент управления, который существует внутри родительской страницы (стандартная страница - не автономный пользовательский элемент управления).Я передал главную страницу в качестве родительского свойства «parent» пользовательского элемента управления, и я могу получить доступ практически к любому элементу управления в родительском элементе.Например: это работает для доступа к блокируемой точке в родительском элементе:

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

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 24 ноября 2011

Я столкнулся с той же проблемой, но, как Найджел указывает в этот ответ ,

"ApplicationBar не является стандартным объектом Silverlight, поэтому он не вписывается в визуальное дерево, не может быть привязан и x: Name не работает."

Оказывается, в классе PhoneApplicationPage есть свойство ApplicationBar . Вы можете использовать его для доступа к панели приложений, а затем получить оттуда кнопки или элементы меню.

Вот пример C # того, что я сделал в конструкторе страниц для локализации текста:

public MyPage()
{
    InitializeComponent();

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

По общему признанию, использование индекса для определения местоположения предмета, а затем необходимость его разыграть - неудачно, но по крайней мере это работает!

...