J'ai trouvé un moyen pour faire cela, mais c'est assez moche et probablement pas très rapide ... Fondamentalement, l'idée est de créer une liaison avec le chemin donné et de l'appliquer à une propriété d'un objet de dépendance. De cette façon, la liaison fait tout le travail de récupération de la valeur:
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));
}
}
Pouvez-vous donner un exemple de la façon dont vous souhaitez utiliser cette ? – Rachel