WP Silverlight:如何以编程方式将ItemTemplate分配给PanoramaItem?

时间:2012-09-20 09:57:18

标签: silverlight windows-phone-7 itemtemplate

情况:
我有2个全景项目的全景控制。第一项包含选项列表,如果我选择其中一项,全景控制应切换到第二项。如您所知,每次都应动态更新第二项的内容。此外,每个选项的ItemTemplate应该是不同的 我的解决方案:
我决定每次需要切换时创建全景控件(因为以编程方式切换全景项的唯一方法是更改​​DefaultItem属性,这需要重新加载页面或隐藏它并显示另一个控件)。此解决方案有效,但现在我需要为每个全景项目分配不同的ItemTemplate。 (模板是xaml。我只需要分配它。) 的问题:
我的解决方案是否正确 我如何在代码中分配ItemTemplate?

2 个答案:

答案 0 :(得分: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 :(得分:1)

我认为你的解决方案并不好。正如您在WP7 Guidelines中看到的那样:

  • 不要像使用向导应用程序那样使用数据透视控件进行基于任务的导航。

同样适用于Panorama。当用户选择项目时,您最好导航到另一个页面。

请参阅人员中心。您选择一个人,手机会显示人员详细信息页面。