2011-01-29 72 views
5

我正在開發一個具有動態數量的PanoramaItems的應用程序,現在通過使用它的'ItemsSource'屬性將它們的列表複製到Panorama中來添加所有這些應用程序。如何以編程方式將項目添加到WP7中的PanoramaItem中

但是,當我嘗試添加東西到創建的PanoramaItems時出現問題。現在,我可以添加一個ListBox,並按預期工作,但我真的很想添加一些我可以更多地控制的東西(可能是某種類型的自定義控件)。

現在,我找到了一些公開的地方,告訴我如何通過編輯MainPage.xaml來做到這一點,但因爲我不知道它們中有多少我需要我不能(我認爲)這樣做那。

由於PanoramaItem類沒有'Items'屬性,只是'Content'(這是我認爲我需要的),所以添加了這個問題。

我想我需要定義的.xaml/cs文件自定義控件,然後不知何故它應用到了PanoramaItem,但我真的不知道

回答

3

我要去這裏假設你」在這裏重新使用MVVM框架,所以如果沒有,我很抱歉。

您正確地認爲您可能想要爲Pano項目使用用戶控件。一旦你得到了這裏的新XAML代碼:

<controls:Panorama ItemsSource="{Binding PanoViewModels}"> 
    <controls:Panorama.ItemTemplate> 
      <DataTemplate> 
       <ctl:PanoItemControl /> 
      </DataTemplate> 
    </controls:Panorama.ItemTemplate> 
</controls:Panorama> 

顯然這是簡化,但應該得到的想法。在您的控件中,您可以直接綁定到PanoViewModels中包含的對象。

+0

作品一種享受,謝謝! – 2011-01-30 01:40:28

2

如果你正在做MVVM和數據綁定,那麼Barranger Ridler的回答看起來不錯。

如果您想爲每個孩子編寫自定義的C#代碼,那麼您需要在每個PanoramaItem的內容中放置一個容器(例如Grid或StackPanel) - 然後可以添加到該容器的子項。我沒有C#代碼,但是這裏是Ironruby代碼 - 它將5個TextBlocks添加到StackPanel,然後將該StackPanel設置爲PanoramaItem的內容 - 它應該很容易跨接。

stack_panel = StackPanel.new 

for i in 1..5 
    t = TextBlock.new 
    t.font_size = i*24 
    t.text = "Line " << i.to_s 
    s.children.add t 
end 

pi = PanoramaItem.new 
pi.header = "Title" 
pi.content = stack_panel 

panorama.items.add pi 

基於代碼http://script.iron7.com/#/Script/Detail?scriptId=ed9e4e216a474432a9e88523b201965d&userLowerCaseName=stuart

相關問題