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

WP Silverlight:如何以编程方式将ItemTemplate分配给PanoramItem?,silverlight,windows-phone-7,itemtemplate,Silverlight,Windows Phone 7,Itemtemplate,情境: 我有一个带有2个全景项目的全景控件。第一项包含选项列表,如果我选择其中一项,全景控制应该切换到第二项。正如您所理解的,第二项的内容每次都应该动态更新。此外,每个选项的ItemTemplate应该不同。 我的解决方案: 我决定在每次需要切换时创建panorama控件(因为以编程方式切换panorama项的唯一方法是更改需要重新加载页面的DefaultItem属性,或者隐藏此控件并显示另一个控件)。这个解决方案有效,但现在我需要为每个全景项目分配不同的ItemTemplate。(模板是xam

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

我认为您的解决方案不好。正如您在图中所看到的:

  • 不要像在向导应用程序中一样,将pivot控件用于基于任务的导航
全景也是如此。当用户选择一个项目时,您最好导航到另一个页面


看看人民中心。您选择一个人,手机会显示个人详细信息页面。

我认为您的解决方案不好。正如您在图中所看到的:

  • 不要像在向导应用程序中一样,将pivot控件用于基于任务的导航
全景也是如此。当用户选择一个项目时,您最好导航到另一个页面

看看人民中心。您选择一个人,手机会显示个人详细信息页面。

如何在代码隐藏中分配ItemTemplate

解决方案如下所示:

public-void-constructurui()
{
全景全景Ctrl=新建全景();
PanoramaItem PanoramaItem=新的PanoramaItem();
panoramaItem.Header=“main”;
PanoramaItem panoramaItem1=新的PanoramaItem();
panoramaItem1.Header=“非主要”;
ListBox ListBox=新建ListBox();
listBox.ItemsSource=CreatePanoramaItems();
DataTemplate itemTmp=(DataTemplate)XamlReader.Load(
@"
");
listBox.ItemTemplate=itemTmp;
panoramaItem.Content=listBox;
panoramactrl.Items.Add(全景项目);
panoramactrl.Items.Add(panoramaItem1);
this.LayoutRoot.Children.Add(panoramactrl);
}

private List CreatePanoramaItems()
{
列表全景项目=空;
全景项目=新列表
{ 
新数据(“123”、“456”、“1”),
新数据(“234”、“567”、“2”),
新数据(“345”、“678”、“3”)
};
返回全景图项目;
}
希望这对其他人有所帮助。

如何在代码隐藏中分配ItemTemplate

解决方案如下所示:

public-void-constructurui()
{
全景全景Ctrl=新建全景();
PanoramaItem PanoramaItem=新的PanoramaItem();
panoramaItem.Header=“main”;
PanoramaItem panoramaItem1=新的PanoramaItem();
panoramaItem1.Header=“非主要”;
ListBox ListBox=新建ListBox();
listBox.ItemsSource=CreatePanoramaItems();
DataTemplate itemTmp=(DataTemplate)XamlReader.Load(
@"
");
listBox.ItemTemplate=itemTmp;
panoramaItem.Content=listBox;
panoramactrl.Items.Add(全景项目);
panoramactrl.Items.Add(panoramaItem1);
this.LayoutRoot.Children.Add(panoramactrl);
}

private List CreatePanoramaItems()
{
列表全景项目=空;
全景项目=新列表
{ 
新数据(“123”、“456”、“1”),
新数据(“234”、“567”、“2”),
新数据(“345”、“678”、“3”)
};
返回全景图项目;
}

希望这对某人有所帮助。

谢谢您的回答。好吧,我看看,我选错了路。让我们试试别的。谢谢你的回答。好吧,我看看,我选错了路。让我们试试别的。
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;
}