Вопрос по windows-phone-7, c# – Преобразование PivotItem в Usercontrol для повышения производительности загрузки в WP7

2

Мой MainPage.xaml - это сводная страница с 3 сводными элементами. В настоящее время он загружает все необходимые вещи для каждого из сводных элементов в конструкторе MainPage. Это плохо, потому что загружает много ненужного.

чтениеВот а такжеВот предполагает, что я загружаю только первый PivotItem, а после загрузки загружаю остальные элементы. В частности:

Improve the performance of the pivot application by loading Pivot control content on-demand as opposed to loading everything at startup. One solution is to take the content from each PivotItem control and convert into UserControls. You can then subscribe to the LoadingPivotItem event on the root pivot control. Next, in the event handler, instantiate the proper UserControl and set it as the PivotItem content.

Если я последую предложению:

<code>private void OnLoadingPivotItem(object sender, PivotItemEventArgs e)
{
if (e.Item.Content != null)
{
    // Content loaded already
    return;
}

Pivot pivot = (Pivot)sender;

if (e.Item == pivot.Items[0])
{
    e.Item.Content = new Page1Control();
}
else if (e.Item == pivot.Items[1])
{
    e.Item.Content = new Page2Control();
}
else if (e.Item == pivot.Items[2])
{
    e.Item.Content = new Page3Control();
}
}
</code>

Я должен использовать создать класс PageXControl? Должно ли оно как-то наследоваться от класса главной страницы?

Как взять содержимое из каждого элемента управления PivotItem и преобразовать его в UserControls?

Спасибо

Ваш Ответ

2   ответа
10

е очень просто. Сначала создайте новый UserControl для каждого из ваших сводных элементов. Затем переместите содержимое сводных элементов из сводного элемента в пользовательские элементы управления. Затем вы создаете элементы управления вOnLoadingPivotItem метод, как вы указали. Я создал небольшой проект на GitHub, чтобы показать вам, как это сделать. Увидеть:https://github.com/ErikSchierboom/pivotcontentdemo

Как видите, я извлек UserControls из базового класса, так как они семантически одинаковы. Тем не менее, это ни в коем случае не является необходимым, просто наследовать от UserControl.

Я предпочитаю этот подход, а не тот, в котором сами сводные элементы извлекаются в пользовательские элементы управления.

TNX за отличный пример!
@klingu Добро пожаловать!
6

которые наследуются от PivotItem. Я собрал пример, основанный на проекте Pivot по умолчанию в VS, который разделяет два элемента Pivot на их собственные классы:

http://www.smartmobiledevice.co.uk/projects/PivotItemUserControlSample.zip

Благодарю. Я заметил, что вы использовалиPivotItem для кода сводных страниц вместоUserControl, есть ли разница? Michael
Я думаю, что вы бы использовали UserControl, если бы вы собрали вместе несколько элементов управления, чтобы сформировать другой элемент управления, однако, поскольку вас интересует только PivotItem, то имеет смысл извлечь из этого.

Похожие вопросы