WP7 Как обновить отдельный элемент сводки? - PullRequest
0 голосов
/ 30 сентября 2011

В wp7 я хочу обновить отдельный элемент сводки? Возможно ли это?

Я создаю 5 основных элементов динамически. Я хочу обновить каждый элемент отдельно.

Ответы [ 3 ]

4 голосов
/ 30 сентября 2011

В WP7 отсутствует концепция обновления или перекраски. Silverlight использует графику в режиме сохранения, где различные элементы пользовательского интерфейса сохраняются и управляются.

Когда вы хотите «обновить» свой пользовательский интерфейс, вам просто нужно изменить свойства элементов вашего пользовательского интерфейса. Фреймворк заботится о том, чтобы отразить это изменение на экране.

1 голос
/ 30 сентября 2011

Хорошим решением будет привязка данных в каждом элементе сводки к отдельной модели представления (если у вас много элементов данных на этой странице) или к контролируемым наблюдаемым свойствам (спискам)

Затем вынужно только обновить свойство или viewmodel независимо, это то, что делается с страницами данных режима на сводном элементе управления для повышения производительности (и задержка загрузки данных для ускорения отображения страницы сводного управления)

Лучшая вещьСледует помнить, что вы обновляете не сводную страницу, а отображаемые на ней данные.

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

0 голосов
/ 20 октября 2013

Я использую следующий подход: каждый PivotItem является отдельным UserControl, который наследуется от BaseUserControl. BaseUserControl имеет 2 абстрактных метода: OnPivotItemLoaded и OnSelected.

По умолчанию сводные элементы пусты (или их можно создавать во время выполнения, как в вашем случае). Затем, когда элемент Pivot загружен (просто подпишите его событие), я звоню

private void PivotItemProfile_OnLoaded(object _sender, RoutedEventArgs _e)
    {
        SimpleLogger.WriteLine("Creating ProfileUserControl");
        var pivotItem = _sender as PivotItem;
        if (pivotItem == null) return;

        if (pivotItem.Content == null)
            pivotItem.Content = new ProfileUserControl();

        var item = (pivotItem.Content as BaseUserControl);
        if (item != null)
            item.OnPivotItemLoaded();
    }

Затем я также подписан на событие OnSelectionChanged Pivot:

private void PivotControl_OnSelectionChanged(object _sender, SelectionChangedEventArgs _e)
    {
        var pivotItem = MainPivot.SelectedItem as PivotItem;
        if (pivotItem == null) return;

        var item = (pivotItem.Content as BaseUserControl);
        if (item != null)
            item.OnPivotItemSelected();
    }

Итак, внутри PivotItem (UserControl) я могу определить, что я хочу делать на этих событиях.

...