Я использую следующий подход: каждый 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) я могу определить, что я хочу делать на этих событиях.