我有一个具有以下属性的组合框的自定义类:
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); }
}
其中ItemsSourceProperty,DisplayMemberPathProperty
是已注册的依赖项属性。
现在,如果ItemSource
有一个自定义对象列表:{id int,name string}。和DisplayMemberPath具有值:'name'或'id'。如何访问对象的“名称”或“id”属性?
`
答案 0 :(得分:5)
为什么你需要自己做这个绑定并不完全清楚(当WPF为你做了很多这样的事情时),但这可能有用:
foreach (object item in ItemsSource)
{
var property = item.GetType().GetProperty(DisplayMemberPath);
var value = property.GetValue(item, null);
// Use the value here
}
请注意,这将非常慢,并且只会处理单个属性名称(而不是完整路径)。有更复杂的替代方案会表现得更好,但我可能会先采用最简单的方法。