dcsimg
Login | Register   
LinkedIn
Google+
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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning


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
Thanks for your registration, follow us on our social networks to keep up-to-date