2012-04-10 42 views
0

我想實現一個屏幕來顯示WP7中的評論樹。每條評論都可以有孩子的評論等等。每個孩子的留言會從其父視覺上不同通過縮進WP7 - 實施評論樹。列表框,樹控件等?

即:

"comment text" 
    "Some child comment text" 
    "Some child comment text" 
     "some child comment text" 
"comment text" 
    "Some child comment text" 

什麼會着手實現這個的最佳方式?我想保持實現儘可能簡單,所以最初我想我可以使用單個ListBox並根據樹的深度以編程方式設置每個評論/ ListItem的填充/頁邊距。但我似乎無法得到它的工作。任何示例,建議,建議等?

編輯:做一些額外的閱讀,它似乎是一個DataTrigger對於這種事情將是完美的http://www.codeproject.com/Articles/113152/Applying-Data-Templates-Dynamically-by-Type-in-WP7 ...但WP7不支持觸發器。

我的另一個想法是使邊緣/填充屬性的評論類,然後數據綁定到...這應該工作,但我污染我的評論類與顯示信息。關於如何可以綁定Margin/Padding值的任何想法,但不知道如何混合模型&的視圖代碼?

回答

2

你必須推出自己的,無論是從零起步,或通過組裝現有的控件。 ListBox看起來像是一個很好的選擇。

this MSDN thread (web archive - thread now moved/deleted)偷看,它有關於使用一個ListBox模擬一個TreeView幾點建議和要求(我還沒有驗證),您可以在WP7使用System.Windows.Controls.TreeView(需要提醒的是,你還需要System.Windows.Controls.Toolkit)。

的顯着答案,肖恩Taulbee寫:在ListBox

樹視圖的行爲可以用在收集處理有點智慧來mimiced。特點你的類將需要支持腦海中出現

  • 的集合,其元素支持從子集合

  • 同樣能夠檢測一個元素是否有子集

  • 在列表框的數據模板顯示基於子代的存在以及是否擴展的擴展狀態的堆疊面板的一個元素

  • 在數據中列表框的模板顯示了用於縮進的堆棧面板的一個元素,該縮進反映了子元素的深度 - 爲了完成這個最佳工作,您應該有一個代表要綁定的樹形數據的平面版本的集合 - 然後當您插入項目時,基於這是父項的縮進縮進剛剛點擊

  • 當單擊列表框中的一個節點插入從該節點的孩子進入該列表框勢必

  • 當平面集合節點再次點擊兒童從平面集合中刪除

你可以將所有這些封裝到一些整潔的類中,以提供一個相當簡單的可重用api,我會想象你是否想要。

This thread有噪聲的相當數量,但下跌的底部有一個從馬克·張伯倫評論:

「的TreeView不是天作之合的電話,您可以在其他模擬樹狀視圖 方式,例如,用列表框項目模板,透視或 其他列表模式。這將取決於樹的多少級 你會有的。

「舉個例子,你可以模板您的列表項包含一個標籤和 另一個具有相同項目模板的列表框。這樣做,你可以模擬 在水平儘可能多的演練,你需要處理,但在 只有一個分支的時候。「

」您可以重新模板樹視圖(源也可 在Silverlight工具包),但它不是一個支持的方案,並 你需要做的工作體面的數額得到它在尋找良好的 從設計&重新模板的角度來看,手機「。

+0

這兩個鏈接都死了 – Pete 2013-12-06 21:35:13

+0

感謝您指出,@Pete。我已更新鏈接並添加了其他信息。 – 2013-12-06 22:29:54

+0

謝謝你!這很奇怪,因爲默認的電子郵件應用程序有某種樹形視圖結構會對來自同一個發件人的電子郵件進行分類。 – Pete 2013-12-06 22:40:51