Tôi đang viết điều khiển tùy chỉnh và tôi có đường dẫn thuộc tính dưới dạng chuỗi (nghĩ comboBox.SelectedValuePath
).
Cách tốt nhất trong mã để đánh giá chuỗi này cho một đối tượng tùy ý là gì?WPF Tôi nên đánh giá đường dẫn tài sản như thế nào?
Tôi rõ ràng chỉ có thể phân tích cú pháp đó, nhưng nó là một hack và tôi muốn đường dẫn hỗ trợ mọi thứ comboBox.SelectedValuePath
thực hiện (để nhất quán).
quả (nhờ Aran Mulholland):
Không chắc về hiệu suất của việc này, nhưng tôi không quan tâm nhiều về việc thực hiện ngay bây giờ.
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;
}
}
Có lưu ý rằng loại khai báo của DependencyProperty trong Target là IEnumerable khi thuộc tính Result là đối tượng kiểu? – dtm
@ ddt có lẽ chỉ là lỗi của tôi - được đăng phiên bản trung gian thay vì cuối cùng. tuy nhiên đã lâu rồi và tôi không nhớ. nếu tôi tìm thấy mã này, tôi sẽ sửa câu hỏi, nếu không bạn đã kiểm tra nó, hãy cho tôi biết những phát hiện của bạn. –
Tôi đã thực hiện một cái gì đó như thế này với các loại phù hợp cho tài sản phụ thuộc và bản thân tài sản; tuy nhiên, đáng ngạc nhiên, nó vẫn hoạt động nếu tôi thay thế IEnumerable thay cho Object trong DepedencyProperty.Register. Không chắc chắn những gì để làm cho rằng ... – dtm