2012-08-13 49 views
0

我希望有人能指出我在這裏向正確的方向,如何動態創建的代碼在C#(WinRT的)

我面對,我必須構建使用創建屏幕的任務列表框項目從套接字發送給我的消息。屏幕可以由您的標準GUI項目組成,並且這包括一個列表/表格。 我可以看到很多關於如何在XAML中使用DataTemplate創建表的代碼和技巧,但是我有2個(相關的)我正在努力的事情。

  1. 什麼是創建代碼(WinRT中/ C#)名單的最好辦法,可能包含一個複雜的組件heirachy(按鈕/由我制定了一個面板內的圖像)。我看到ItemContainerGenerator是一個密封類,所以我不能推出自己的...我是否通過代碼創建自己的DataTemplate如何?

  2. 我該如何實施行回收?我是否需要爲邊界顏色和對齊等每個小參數添加綁定,如果是這樣會對性能產生重大影響?

任何指針肯定會被讚賞。 (我更在家中的Android/Java和C#是一個令人興奮的新的世界對我來說)

乾杯,

彼得。

回答

0

WinRT實際上並不支持在單個屏幕上表示分層數據。如果你看看如何實現文件選擇器 - 你需要逐個挖掘子文件夾,然後以相同的方式返回。

如果您的層次結構複雜但相對平坦 - 使用DataTemplates可能已經足夠,但對於Metro應用程序 - 您並不希望層次結構變得複雜,並且您可能想嘗試考慮如何使它更容易易於在觸控中心UI中使用。

你是什麼意思行回收? ListView或ListBox默認使用VirtualizingStackPanel作爲其ItemsPanel,並自動虛擬化行或列。如果你想要更多的定製 - 你可能需要實現你自己的ItemsControl子類。

+0

謝謝菲利普,底層組件通常會相對平坦 - 血流會來自包含其他組件的「陰影區域」。因爲這是一個顯示在其他地方構建的屏幕的工具包,所以我真的受到設計好屏幕的人的擺佈,只要好的UI設計。我不得不展示它是如何設計的。 :( – 2012-08-13 06:31:16

+0

我對VirtualizingStackPanel的理解是,它協助創建和移除面板,但它是否重用了創建它們時刪除的組件?我無法看到它指定發生此事的任何地方。任何情況下,我如何告訴它要創建什麼或如何回收它? – 2012-08-13 06:33:04

+0

我不認爲你可以 - 它實際上只重用從實際的DataTemplate生成的佈局,所以對於任何更自定義的 - 如果你想回收您從元數據中生成的佈局 - 您需要推出自己的控件和邏輯。 – 2012-08-13 06:48:33