2012-09-20 40 views
0

現狀:
我有2個全景項的全景控制。第一項包含選項列表,如果我選擇其中一項,全景控制應切換到第二項。據瞭解,第二項內容應該每次動態更新。此外,每個選項的ItemTemplate應該不同。
我的解決辦法:
我決定每次我需要切換(因爲在程序中切換全景項的唯一方法是改變需要重新載入頁面或隱藏這一點,並表示另一控制DefaultItem屬性)創建全景控制。這個解決方案的工作原理,但現在我需要爲每個全景項目分配不同的ItemTemplate。 (模板在xaml中,我只需要分配它)。
問題:
是我的解決方案是否正確? 如何在後面的代碼中分配ItemTemplate?WP Silverlight:如何以編程方式將ItemTemplate分配給PanoramaItem?

回答

2

我怎麼可以指定在後面的代碼ItemTemplate中的?

該解決方案是這樣的:

public void constructUI() 
{ 

Panorama panoramactrl = new Panorama(); 

PanoramaItem panoramaItem = new PanoramaItem(); 
panoramaItem.Header = "main"; 
PanoramaItem panoramaItem1 = new PanoramaItem(); 
panoramaItem1.Header = "not main"; 

ListBox listBox = new ListBox(); 
listBox.ItemsSource = CreatePanoramaItems(); 

DataTemplate itemTmp = (DataTemplate)XamlReader.Load(

    @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007""> 
    <StackPanel Tag=""{Binding id}""> 
    <TextBlock Text=""{Binding FirstRaw}"" Foreground=""Red"" FontSize=""40"" /> 
    <TextBlock Text=""{Binding SecondRaw}"" Foreground=""Orange"" FontSize=""30"" Margin=""10,0,0,0"" /> 
    </StackPanel> 
    </DataTemplate>"); 

listBox.ItemTemplate = itemTmp; 
panoramaItem.Content = listBox; 
panoramactrl.Items.Add(panoramaItem); 
panoramactrl.Items.Add(panoramaItem1); 
this.LayoutRoot.Children.Add(panoramactrl); 

}

private List<Data> CreatePanoramaItems() 
{ 
    List<Data> Panoramaitems = null; 
    Panoramaitems = new List<Data> 
    { 
    new Data("123", "456", "1"), 
    new Data("234", "567", "2"), 
    new Data("345", "678", "3") 
    }; 
    return Panoramaitems; 
} 

希望這將是一個人幫助。

1

我不認爲您的解決方案是好的。正如你可以在一個WP7 Guidelines看到:

  • 不要在嚮導應用程序使用擺動控制基於任務的導航,等等。

這同樣適用於全景。當用戶選擇一個項目時,最好導航到另一個頁面。

查看人物樞紐。您選擇一個人,手機會顯示您的人物詳細信息頁面。

+0

謝謝你的回答。好吧,我會看到,我選擇了錯誤的方式。讓我們嘗試不同的東西。 –

相關問題