Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: .NET (WPF)
Expertise: Intermediate
Jul 13, 2009

Evaluating an Object's PropertyPath

PropertyPaths are a very useful binding concept, and can be useful in other instances as well. However, .NET 3.5 does not support evaluating PropertyPaths against objects directly without using binding. Here's a workaround:

public static class DataBinder
{
    private static readonly DependencyProperty DummyProperty = 
        DependencyProperty.RegisterAttached(
        "Dummy",
        typeof(Object),
        typeof(DependencyObject),
        new UIPropertyMetadata(null));

    public static Object Eval(Object container, String expression)
    {
        Binding binding = new Binding(expression) { Source = container };
        DependencyObject dummyDO = new DependencyObject();
        BindingOperations.SetBinding(dummyDO, DummyProperty, binding);
        return dummyDO.GetValue(DummyProperty);
    }
}

The following code provides a quick and easy way to test the workaround:

public partial class PropertyPathParserDemo : Window
{
    public PropertyPathParserDemo()
    {
        InitializeComponent();
        Foo foo = new Foo() { Bar = new Bar() { Value = "Value" } };
        this.Content = DataBinder.Eval(foo, "Bar.Value");
    }

    public class Foo
    {
        public Bar Bar
        {
            get;
            set;
        }
    }

    public class Bar
    {
        public string Value
        {
            get;
            set;
        }
    }
}
Rahul Singla
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap