Я пишу настраиваемый элемент управления, и у меня есть путь свойства как строка (думаю, comboBox.SelectedValuePath
).
Каков наилучший способ в коде для оценки этой строки для произвольного объекта?WPF Как мне оценить путь собственности?
Я, очевидно, могу просто разобрать его сам, но это взломать, и я хочу, чтобы путь поддерживал все, что comboBox.SelectedValuePath
делает (для согласованности).
Результат (благодаря Aran Mulholland):
Не уверен, что о выполнении этого, но я все равно много для выполнения прямо сейчас.
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;
}
}
Следует ли отметить, что объявленный тип свойства DependencyProperty в Target является IEnumerable, когда свойство Result имеет объект типа? – dtm
@dtm, вероятно, только моя ошибка - размещена промежуточная версия вместо окончательной. однако это было давно, и я не помню. если я найду этот код, я исправлю вопрос, иначе, если вы его протестировали, пожалуйста, дайте мне знать ваши выводы. –
Я реализовал что-то вроде этого с соответствующими типами для свойства зависимости и самого свойства; однако, и, что удивительно, он все еще работает, если я заменю IEnumerable вместо Object in DepedencyProperty.Register. Не уверен, что делать с этим ... – dtm