エミュレータに対してテストすると、ページが正常に表示されるという問題があります。ただし、デバイスで実行すると、ページは空です!
Pivot.ItemTemplate 内にアイテム テンプレートを使用してピボット コントロールを作成しています。ListBox.ItemTemplate を使用した ListBox もあります。
以下のコードは、「pivot 1」、「pivot 2」、「pivot 3」の 3 つのピボット アイテムを含む「PIVOT TEST」というタイトルのページを生成する必要があります。各ピボット内には、リストが必要です。「ピボット 1」の場合、リストには「名前 1」、「名前 2」、「名前 3」の 3 つの項目が必要です。「ピボット 2」の場合、リストには「名前 1」、「名前 2」の 2 つの項目が必要です。「ピボット 3」の場合、リストには「名前 1」という項目が 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()
}
};
}
}
また、ランダム データをリスト ボックスに入力するためのクラスも 1 つあります。
public class RandomObject {
public string Name { get; set; }
}
これをエミュレーターで実行すると、次のような期待される結果が得られます。
ただし、これをデバイスで実行すると、何も表示されません! 空のページです。表示されるのは上部にある「PIVOT TEST」だけです。これはピボット コントロールのタイトルですが、ピボット アイテムやリスト ボックスはありません。
上記のコードに追加する必要はありません。テスト プロジェクトを作成し、上記のコードをコピーして貼り付けて確認することができます。
これの原因は何ですか?
前もって感謝します!
編集: これが Windows Phone OS 7.1 プロジェクトであることを忘れていました。それが重要かどうかはわかりません。