我遇到一个问题,当我对模拟器进行测试时,我的页面正常显示。但是,当我在我的设备上运行它时页面是空的!
我正在使用项目模板进行数据透视控制,在Pivot.ItemTemplate中我有一个ListBox,也有ListBox.ItemTemplate
下面的代码应该会生成一个标题为'PIVOT TEST'的页面,其中包含3个枢轴项目:'pivot 1','pivot 2','pivot 3'。在每个枢轴内,应该有一个列表。对于'pivot 1',列表中应该有3个项目:'name 1','name 2','name 3'。对于'pivot 2',列表中应该有2个项目:'name 1','name 2'。对于'pivot 3',列表中应该有1个项目:'name 1'
这是xaml:
...
<controls:Pivot x:Name="pivot" Title="PIVOT TEST">
<controls:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding TitleText}" />
</DataTemplate>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding List}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</controls:Pivot.ItemTemplate>
</controls:Pivot>
...
这是整个页面的代码:
public partial class PivotTest : PhoneApplicationPage {
private List<RandomObject> randomObjectList
= new List<RandomObject>();
public PivotTest() {
InitializeComponent();
randomObjectList.Add(new RandomObject() {
Name = "name 1"
});
randomObjectList.Add(new RandomObject() {
Name = "name 2"
});
randomObjectList.Add(new RandomObject() {
Name = "name 3"
});
BindPivot();
}
private void BindPivot() {
pivot.ItemsSource = new[] {
new {
TitleText = "pivot 1",
List = randomObjectList
},
new {
TitleText = "pivot 2",
List = randomObjectList.Take(2).ToList()
},
new {
TitleText = "pivot 3",
List = randomObjectList.Take(1).ToList()
}
};
}
}
我还有一个类只是为了将随机数据填充到列表框中:
public class RandomObject {
public string Name { get; set; }
}
在模拟器上运行它会得到预期的结果,如下所示:
但是,当我在设备上运行时,根本没有显示任何内容!它是一个空页面,唯一显示的是顶部的“PIVOT TEST”,它是枢轴控制的标题,但没有枢轴项,也没有列表框。
上面的代码不需要任何添加,您可以制作测试项目并复制/粘贴上面的代码进行检查。
这可能是什么原因?
提前致谢!
编辑: 忘记提到这是一个Windows Phone OS 7.1项目。我不知道这是否重要。
答案 0 :(得分:0)
在尝试了一些事情后,我发现使用匿名类型是导致页面无法在设备上显示的原因,我不知道为什么会这样。当我声明我的类型化的类并使用那些类而不是匿名类型时,页面在设备上显示正常。