Home > DeveloperSection > Forums > Access a property of IEnumerable
Jayden Bell
Jayden Bell

Total Post:105

Points:739
Posted on    January-28-2014 11:43 PM

 C# C# 
Ratings:


 1 Reply(s)
 748  View(s)
Rate this:

I have a custom class for a combobox having following properties:

public IEnumerable<object> ItemsSource

{

    get { return (IEnumerable<object>)GetValue(ItemsSourceProperty); }

    set

    {

        SetValue(ItemsSourceProperty, value);

    }

}

public string DisplayMemberPath

{

    get { return (string)GetValue(DisplayMemberPathProperty); }

    set { SetValue(DisplayMemberPathProperty, value); }

}

where ItemsSourceProperty,DisplayMemberPathProperty are the dependency properties already registered.

Now if ItemSource has a list of custom objects :{id int, name string}. and DisplayMemberPath has value:'name' or 'id'. How can I access 'name' or 'id' properties of my object ?



Pravesh Singh

Total Post:411

Points:2881
Posted on    January-29-2014 12:43 AM

Hi Jayden,

It's not entirely clear why you need to do this binding yourself (when WPF does a lot of this for you), but this might work:

foreach (object item in ItemsSource)

{

    var property = item.GetType().GetProperty(DisplayMemberPath);

    var value = property.GetValue(item, null);

    // Use the value here

}

Note that this will be pretty slow, and will only handle a single property name (rather than a full path). There are more complex alternatives which would perform better, but I'd probably go with the simplest approach first.


Don't want to miss updates? Please click the below button!

Follow MindStick