Piszę formant niestandardowy i mam ścieżkę właściwości jako ciąg (pomyśl comboBox.SelectedValuePath
).
Jaki jest najlepszy sposób w kodzie do oceny tego ciągu dla dowolnego obiektu?WPF Jak oceniać ścieżkę właściwości?
Oczywiście mogę sam go przetworzyć, ale jest to hack i chcę, aby ścieżka obsługiwała wszystko, co robi comboBox.SelectedValuePath
(dla spójności).
Wynik (dzięki Aran Mulholland):
Nie wiesz, o wydajności, ale nie obchodzi mnie dużo do wykonywania teraz.
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;
}
}
Czy należy zauważyć, że zadeklarowany typ DependencyProperty w Target jest IEnumerable, gdy właściwość Result jest typu obiektu? – dtm
@dtm prawdopodobnie po prostu mój błąd - opublikowałem wersję pośrednią zamiast ostateczną. jednak to było dawno temu i nie pamiętam. jeśli znajdę ten kod, poprawię to pytanie, w przeciwnym razie, jeśli przetestowałeś to, proszę poinformuj mnie o swoich odkryciach. –
Wprowadziłem coś takiego z dopasowanymi typami dla właściwości dependency i samej właściwości; jednak i, co zaskakujące, nadal działa, jeśli podstawię IEnumerable w miejsce Object w DepedencyProperty.Register. Nie jestem pewien, co z tym zrobić ... – dtm