1

エミュレータに対してテストすると、ページが正常に表示されるという問題があります。ただし、デバイスで実行すると、ページは空です!

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; }
}

これをエミュレーターで実行すると、次のような期待される結果が得られます。

ピボット 1 スクリーンショット ピボット 2 のスクリーンショット ピボット 3 のスクリーンショット

ただし、これをデバイスで実行すると、何も表示されません! 空のページです。表示されるのは上部にある「PIVOT TEST」だけです。これはピボット コントロールのタイトルですが、ピボット アイテムやリスト ボックスはありません。

上記のコードに追加する必要はありません。テスト プロジェクトを作成し、上記のコードをコピーして貼り付けて確認することができます。

これの原因は何ですか?

前もって感謝します!

編集: これが Windows Phone OS 7.1 プロジェクトであることを忘れていました。それが重要かどうかはわかりません。

4

1 に答える 1

0

いくつかのことを試した後、匿名型の使用がデバイスにページが表示されない原因であることがわかりましたが、その理由はわかりません. 型指定されたクラスを宣言し、匿名型の代わりにそれらを使用すると、デバイスでページが正常に表示されます。

于 2013-02-21T13:19:13.427 に答える