我想獲得一個對象的嵌套屬性的值(類似Person.FullName.FirstName)。我在.Net中看到有一個名爲PropertyPath的類,WPF在Binding中使用類似的目的。 有沒有辦法重用WPF的機制,或者我應該自己寫一個。有沒有辦法使用PropertyPath類獲取對象的屬性值?
7
A
回答
12
重複使用PropertyPath是誘人的,因爲它支持在指出和索引時遍歷嵌套屬性。你可以自己編寫類似的功能,我過去也有自己的功能,但它涉及半複雜的文本解析和大量的反射工作。
Andrew指出你可以簡單地重用WPF中的PropertyPath。我假設你只是想針對一個對象來評估這個路徑,在這種情況下代碼是有點牽扯的。要評估PropertyPath,必須在針對DependencyObject的Binding中使用它。爲了演示這一點,我剛剛創建了一個名爲BindingEvaluator的簡單DependencyObject,它具有一個DependencyProperty。然後通過調用應用綁定的BindingOperations.SetBinding來實現真正的魔法,以便我們可以讀取評估值。
var path = new PropertyPath("FullName.FirstName");
var binding = new Binding();
binding.Source = new Person { FullName = new FullName { FirstName = "David"}}; // Just an example object similar to your question
binding.Path = path;
binding.Mode = BindingMode.TwoWay;
var evaluator = new BindingEvaluator();
BindingOperations.SetBinding(evaluator, BindingEvaluator.TargetProperty, binding);
var value = evaluator.Target;
// value will now be set to "David"
public class BindingEvaluator : DependencyObject
{
public static readonly DependencyProperty TargetProperty =
DependencyProperty.Register(
"Target",
typeof (object),
typeof (BindingEvaluator));
public object Target
{
get { return GetValue(TargetProperty); }
set { SetValue(TargetProperty, value); }
}
}
如果您想擴展它,您可以連接PropertyChanged事件以支持讀取值的變化。我希望這有幫助!
0
相關問題
- 1. 獲取所有值的屬性對象
- 2. 有沒有辦法引用自定義類對象的一個屬性/方法?
- 3. 有一個對屬性的引用,有沒有辦法獲取對包含對象的引用?
- 4. Tkinter:AttributeError:NoneType對象沒有屬性獲取
- 5. 對象沒有屬性獲取
- 6. 有沒有辦法用CodeIgniter獲取當前對象和方法?
- 7. 有沒有辦法讓私人的JavaScript對象屬性?
- 8. 有沒有辦法鉤住對象屬性上的'刪除'?
- 9. 有沒有辦法控制JSON對象中的屬性順序?
- 10. 有沒有辦法「提取」TypeScript接口屬性的類型?
- 11. PHP動態對象屬性有沒有辦法讓它工作?
- 12. 「numpy.ndarray」對象有沒有屬性「值」
- 13. 有沒有辦法修改匿名對象的屬性中的值?
- 14. 從類對象獲取沒有'__getitem__'屬性的參數?
- 15. String對象有沒有屬性讀取
- 16. 有沒有辦法使用linq來循環對象列表的屬性?
- 17. 有沒有辦法使用CSS屬性值?
- 18. 有沒有辦法使用i18n和Rails 4插入屬性值?
- 19. 有沒有辦法調試PHP來捕獲非對象屬性上的錯誤?
- 20. 有沒有辦法同時設置一個對象的值和屬性?
- 21. 有沒有辦法通過Tag屬性獲取XAML元素?
- 22. 有沒有辦法通過屬性來獲取元素?
- 23. 使用propertyinfo對象獲取屬性值
- 24. 有沒有辦法使用多個System.Web.Mvc.RemoteAttributes?獲取「重複的RemoteAttribute屬性」。
- 25. 使用django-socialregistration獲取'Facebook'對象沒有任何屬性'圖'
- 26. 有沒有辦法自動獲取對象分配的ID?
- 27. jsp:useBean沒有從bean對象獲取屬性值
- 28. 'CheckoutView' 對象有沒有屬性 '對象'
- 29. 有沒有辦法在javascript中獲取返回值的類型?
- 30. 獲取AttributeError的:「海峽」對象有沒有屬性「追加」
你會如何回覆該屬性? – 2009-11-11 18:27:10