情况:
我有一个带有 2 个全景项目的全景控件。第一项包含选项列表,如果我选择其中一个,全景控制应该切换到第二项。如您所知,第二项的内容应每次动态更新。此外,每个选项的 ItemTemplate 应该不同。
我的解决方案:
我决定每次需要切换时都创建全景控件(因为以编程方式切换全景项目的唯一方法是更改需要重新加载页面的 DefaultItem 属性或隐藏它并显示另一个控件)。此解决方案有效,但现在我需要为每个全景项目分配不同的 ItemTemplate。(模板在 xaml 中。我只需要分配它)。
问题:
我的解决方案正确吗?以及如何在后面的代码中分配 ItemTemplate?
问问题
1143 次
2 回答
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;
}
希望这对某人有帮助。
于 2012-09-20T11:47:25.077 回答
1
我不认为你的解决方案是好的。正如您在WP7 指南中看到的:
- 不要将枢轴控件用于基于任务的导航,例如在向导应用程序中。
全景图也是如此。当用户选择一个项目时,您最好导航到另一个页面。
请参阅人脉中心。您选择一个人,手机会显示您的个人详细信息页面。
于 2012-09-20T11:13:23.843 回答