public void GoToItem(PivotItem item) { if (item == null || item == selectedItem) return; var widthToScroll = 0.0; int index; for (index = 0; index < Items.Count; index++) { if (Items[index] == item) { internalIndex = index; break; } widthToScroll += ((PivotItem)Items[index]).ActualWidth; } mediator.HorizontalOffset = scroller.HorizontalOffset; var sb = mediator.Resources["Storyboard1"] as Storyboard; var frame = (EasingDoubleKeyFrame)mediator.FindName("edkf"); frame.Value = widthToScroll; sb.Completed -= sb_Completed; sb.Completed += sb_Completed; sb.Begin(); RaiseEvent(new RoutedEventArgs(SelectionChangedEvent)); }
void scroller_ScrollChanged(object sender, ScrollChangedEventArgs e) { var position = 0.0; for (int i = 0; i < Items.Count; i++) { var pivotItem = ((PivotItem)Items[i]); var widthOfItem = pivotItem.ActualWidth; if (e.HorizontalOffset <= (position + widthOfItem - 1)) { selectedItem = pivotItem; if (headers.SelectedItem != selectedItem) { headers.SelectedItem = selectedItem; internalIndex = i; SelectedIndex = i; RaiseEvent(new RoutedEventArgs(SelectionChangedEvent)); } break; } position += widthOfItem; } }