Over a million developers have joined DZone.

Binding to static classes in Windows Phone 7

· Mobile Zone
It's a common request to be able to bind to a global variable in various parts of an application. It's often common that such variables are static.

This question seems to pop up in forums rather regularly and often the advice given is that this isn't possible or to include the "global" variable as part of the model being used as the DataContext of the page. Such duplication of functionality in the model is a bad idea and totally unnecessary.

It's not possible to bind to a static class as binding requires an object instance.
You can, however, bind to static properties of a class.

So we can bind to the static properties of the following.
namespace StaticBinding
{
public class MyStaticClass
{
private static string myStaticProperty = "my static text";

public static string MyStaticProperty
{
get { return myStaticProperty; }
set { myStaticProperty = value; }
}
}
}

  
We can then create an application level resource which we can actually bind to:
.. xmlns:myns="clr-namespace:StaticBinding"

<application.resources>
<mystaticclass x:key="MyStaticClassResource"></mystaticclass>
</application.resources>

  
(Sorry, don't know why the syntax highlighter has forced upper case - I'm sure you're smart enough to work out what should and shouldn't be upper case though. ;)

With the above configured we can then bind to our global property in any page we wish. We just need to set the `Source` and `Path` of the binding.
..
<textblock text="{Binding Path=MyStaticProperty, Source={StaticResource MyStaticClassResource}}">

..
</textblock>


A nice upside of this is that you even get intellisense on the `Path`. (Assuming you've set the `Source` first.)



X-Ref: http://stackoverflow.com/questions/5323052/data-binding-a-string-variable-of-static-class-to-textblock-in-phone-7/5325257#5325257
Topics:

Published at DZone with permission of Matt Lacey, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}