ApplicationBar всегда NULL

У меня есть следующий код XAML:

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="False" x:Name="PageBar">
        <shell:ApplicationBarIconButton IconUri="/Assets/Icons/appbar.questionmark.rest.png" Text="Help" x:Name="HelpIcon" Click="HelpIcon_Click" />
        <shell:ApplicationBar.MenuItems>
            <shell:ApplicationBarMenuItem Text="Help" x:Name="HelpItem" Click="HelpIcon_Click" />
            <shell:ApplicationBarMenuItem Text="About" x:Name="AboutItem" Click="AboutItem_Click" />
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

Но внутри кода C# всегда null.

Ты знаешь почему?


person VansFannel    schedule 09.05.2011    source источник
comment
В какой момент жизненного цикла приложения/страницы вы пытаетесь получить доступ к панели приложения? Возможно, он не был создан в то время, когда вы пытаетесь получить к нему доступ.   -  person Derek Lakin    schedule 09.05.2011


Ответы (2)


Я обнаружил, что это сработало для меня, когда я хотел изменить видимость:

(ApplicationBar as ApplicationBar).IsVisible = true;

Я получил этот ответ от Мэтью.

person Phil    schedule 20.06.2012

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

Вы можете обратиться к ApplicationBar через свойство на PhoneApplicationPage.

var helpItem = this.ApplicationBar.MenuItems[0];
var aboutItem = this.ApplicationBar.MenuItems[1];
person Nigel Sampson    schedule 09.05.2011
comment
Вы также можете создать ApplicationBar в коде, а затем иметь возможность ссылаться на него по имени. - person Matt Lacey; 09.05.2011