2012-08-17 45 views
4

最近我見過一些關於行走視覺樹是不好的練習(here for instance)的評論,但我還沒有看到或找到一個爲什麼這是不好的練習的原因。行走視覺樹不好的做法?

在一個項目中我的工作有相當多的樹遍歷,所以我不知道我是否應該去改變這一切別的東西,還是讓它是因爲它是。

所以,我猜這裏我主要的問題是如果視覺樹行走真的是不好的做法,更重要的是,如果是這樣,爲什麼

而且,當(如果有的話?)會是好走可視化樹?

回答

1
  1. 走視覺樹往往達闖入通過WPF「自然」機制提供的抽象,手動執行什麼樣的框架應該由自己做(通過XAML聲明,綁定等)。這只是一個黑客,簡單地說。有時候表示一個人不確定如何正確使用WPF。 (順便說一下,這確實很難使用)。

  2. 你真的無法知道在任何時候都可視化樹是否完整與否; WPF可能尚未生成所有控件(例如,在填充許多項目的列表時)。爲了解決這個問題,你需要實施安全措施,處理LayoutUpdated事件等,這使你的代碼過於複雜。

1

我會先說你會對這個問題有各種各樣的意見。

在你鏈接的例子中,我會說在這種情況下的可視化樹步行者是錯誤的解決方案 - WPF通常最適用於某種MVVM或類似MVP的模式,這意味着數據綁定,並且如果你綁定到適當的結構,你可以消除很多你可能已經做的視覺樹行走。

我只傾向於使用它的「特殊效果」,因爲它是。我工作的大型WPF內部應用程序有一些視覺樹行走代碼,它以一種可重複使用的方式爲一些ItemControl添加了一些便捷行爲(使用類型參數使這一行爲有很多樂趣)。

我們也走可視化樹中的一些附加屬性,它們控制特定用戶是否被允許來操作UI的某些部分系統的一部分的實施。這是因爲這個系統必須轉換視覺樹,而不管底層數據是什麼 - 用戶權限是一個貫穿始終的問題,底層數據在每一步都不必擔心。

基本上我們只做它做的事情的UI本身 - 用戶界面的行爲,不能以更方便的方式完成(老實說,大多數情況下,大多數其他方式更方便),或實際上調整可視化樹基於一些在用戶界面綁定的數據中不便於表達的因素。如果是關於操縱數據,我們總是在後端數據結構或ViewModels中執行。

0

這取決於你爲什麼走路視覺樹。有很多機制可以使您的視圖自動化,並且在大多數情況下,它們甚至足以完成非常複雜的控制。

在我多年與WPF我已經使用可視化樹創造了無法以其他方式做了一些非標準的行爲走的時候只工作(或我沒有找到其他的方法來做到這些)。我認爲走可視化樹就像其他任何反射工具一樣。這是很好的瞭解它,它有它的應用和缺點。