Подтвердить что ты не робот

WPF Как мне оценить путь собственности?

Я пишу настраиваемый элемент управления, и у меня есть путь свойства как строка (think comboBox.SelectedValuePath).
Каков наилучший способ в коде оценить эту строку для произвольного объекта?

Я, очевидно, могу просто разобрать его сам, но это взломать, и я хочу, чтобы путь поддерживал все comboBox.SelectedValuePath (для согласованности).

Результат (спасибо Аран Малхолланд):

Не уверен в производительности, но сейчас я не очень-очень люблю производительность.

public class BindingEvaluator {
    #region Target Class

    private class Target : DependencyObject {
        public static readonly DependencyProperty ResultProperty = DependencyProperty.Register(
            "Result", typeof(IEnumerable), typeof(BindingEvaluator)
        );

        public object Result {
            get { return this.GetValue(ResultProperty); }
            set { this.SetValue(ResultProperty, value); }
        }
    }

    #endregion

    public object GetValue(object source, string propertyPath) {
        var target = new Target();
        BindingOperations.SetBinding(target, Target.ResultProperty, new Binding(propertyPath) {
            Source = source,
            Mode = BindingMode.OneTime
        });
        return target.Result;
    }
}
4b9b3361

Ответ 1

Создайте объект с одним свойством зависимостей объекта типа, установите для него привязку с вашим пути к вашему пути пути и вашим произвольным объектом в качестве источника. привязка будет выполнена, и вы увидите, что (если что-либо) находится в конце пути свойств. Это единственный способ, который я нашел для этого в коде. вы можете написать механизм рекурсивного отражения, который мог бы следовать пути свойств, но его уже было сделано, мы используем его, когда мы связываем. возьмите пять минут, чтобы написать:)