Сводное управление с шаблоном элемента работает на эмуляторе, но не на реальном устройстве

У меня проблема, когда моя страница отображается нормально, когда я тестирую эмулятор. Однако, когда я запускаю его на своем устройстве, страница пуста!

Я делаю сводное управление с шаблоном элемента, внутри Pivot.ItemTemplate у меня есть ListBox также с ListBox.ItemTemplate

Приведенный ниже код должен создать страницу под названием «ТЕСТ СВОДКИ» с тремя элементами сводки: «основа 1», «основа 2», «основа 3». Внутри каждого свода должен быть список. Для «стержня 1» в списке должно быть 3 элемента: «имя 1», «имя 2», «имя 3». Для «стержня 2» в списке должно быть 2 элемента: «имя 1», «имя 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()
            }
        };
    }
}

У меня также есть один класс для заполнения случайных данных в списке:

public class RandomObject {
  public string Name { get; set; }
}

Запуск этого на эмуляторе дает ожидаемые результаты, как показано здесь:

основной снимок экрана 1основной снимок экрана 2 основной снимок экрана 3

Однако, когда я запускаю это на устройстве, просто ничего не отображается! Это пустая страница, единственное, что отображается, это «СВОДНЫЙ ТЕСТ» вверху, который является заголовком элемента управления сводкой, но без элементов сводки и без списков.

Приведенный выше код не нуждается в каких-либо дополнениях, вы можете сделать тестовый проект и скопировать/вставить приведенный выше код для проверки.

Что может быть причиной этого?

Заранее спасибо!

редактировать: забыл упомянуть, что это проект ОС Windows Phone 7.1. Я не знаю, имеет ли это значение.


person Alaa Masoud    schedule 20.02.2013    source источник


Ответы (1)


Попробовав несколько вещей, я обнаружил, что использование анонимных типов является причиной того, что страница не отображается на устройстве, хотя я не уверен, почему. Когда я объявляю свои типизированные классы и использую их вместо анонимных типов, страница отлично отображается на устройстве.

person Alaa Masoud    schedule 21.02.2013
comment
@AlaaMasaoud Привет, у меня такая же проблема в эмуляторе, моя привязка работает правильно, но не работает на устройстве. что я думаю делать - person Eldho; 27.01.2014