Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Making the ApplicationBar bindable

0.00/5 (No votes)
12 May 2011 1  
How to make the ApplicationBar bindable.

Capture.png

One of the small issues with using MVVM (Model-View-ViewModel) in a WP7 application is that both ApplicationBarIconButton and ApplicationBarMenuItem do not derive from DependencyObject. This means that I can not bind to any of its properties, making a “true” MVVM application a little hard! I created two simple wrappers for these that make it possible to “bind” to a method.

XML
<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
        <controls:MethodApplicationBarIconButton 
          IconUri="/Images/appbar_button1.png" Text="Button 1" 
          MethodName="ShowMessage" />
        <controls:MethodApplicationBarIconButton IconUri="/Images/appbar_button2.png" 
           Text="Button 2" MethodName="ShowMessage" />
        <shell:ApplicationBar.MenuItems>
            <controls:MethodApplicationBarMenuItem Text="MenuItem 1" MethodName="ShowMessage" />
            <controls:MethodApplicationBarMenuItem Text="MenuItem 2" MethodName="ShowMessage" />
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

The only “little” caveat is that you have to set the BindApplicationBar attached property to true:

XML
controls:ApplicationBarHelper.BindApplicationBar="True"

And that’s it...

Here is the latest source.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here