Tôi đã tìm được cách để làm điều này, nhưng nó khá xấu xí và có lẽ không phải rất nhanh ... Về cơ bản, ý tưởng là tạo ra một ràng buộc với đường dẫn đã cho và áp dụng nó vào một thuộc tính của một đối tượng phụ thuộc. Bằng cách đó, các ràng buộc làm tất cả công việc thu hồi giá trị:
public static class PropertyPathHelper
{
public static object GetValue(object obj, string propertyPath)
{
Binding binding = new Binding(propertyPath);
binding.Mode = BindingMode.OneTime;
binding.Source = obj;
BindingOperations.SetBinding(_dummy, Dummy.ValueProperty, binding);
return _dummy.GetValue(Dummy.ValueProperty);
}
private static readonly Dummy _dummy = new Dummy();
private class Dummy : DependencyObject
{
public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(object), typeof(Dummy), new UIPropertyMetadata(null));
}
}
Nguồn
2010-08-26 20:35:28
Bạn có thể cung cấp một ví dụ về cách bạn muốn sử dụng ? – Rachel