protected override void OnApplyTemplate() { base.OnApplyTemplate(); _staticHeader = this.GetTemplateChild("StaticHeader") as PivotHeaderPanel; _titleContentControl = this.GetTemplateChild("TitleContentControl") as ContentControl; _header = this.GetTemplateChild("Header") as PivotHeaderPanel; _headerClipperGeometry = this.GetTemplateChild("HeaderClipperGeometry") as RectangleGeometry; _headerClipper = this.GetTemplateChild("HeaderClipper") as ContentControl; _pivotItemTemplate = new DataTemplate(() => new PivotItem()); _isUWPTemplate = _staticHeader != null; if (!_isUWPTemplate) { ItemsPanelRoot = null; } _isTemplateApplied = true; UpdateProperties(); #if __WASM__ || __SKIA__ //TODO: Workaround for https://github.com/unoplatform/uno/issues/5144 //OnApplyTemplate() is comming too late when using bindings SetNeedsUpdateItems(); #endif SynchronizeItems(); }
protected override void OnApplyTemplate() { base.OnApplyTemplate(); _staticHeader = this.GetTemplateChild("StaticHeader") as PivotHeaderPanel; _titleContentControl = this.GetTemplateChild("TitleContentControl") as ContentControl; _header = this.GetTemplateChild("Header") as PivotHeaderPanel; _headerClipperGeometry = this.GetTemplateChild("HeaderClipperGeometry") as RectangleGeometry; _headerClipper = this.GetTemplateChild("HeaderClipper") as ContentControl; _pivotItemTemplate = new DataTemplate(() => new PivotItem()); _isUWPTemplate = _staticHeader != null; if (!_isUWPTemplate) { ItemsPanelRoot = null; } _isTemplateApplied = true; Loaded += (s, e) => RegisterHeaderEvents(); Unloaded += (s, e) => UnregisterHeaderEvents(); Items.VectorChanged += OnItemsVectorChanged; UpdateProperties(); SynchronizeItems(); }
private static FrameworkElement GetPivotHeaderIndicator(PivotHeaderPanel panel, string Name, int Index) { if (panel == null) { return(null); } var container = panel.Children[Index] as FrameworkElement; return(container?.VisualTreeFindName(Name)); }
protected override void OnApplyTemplate() { base.OnApplyTemplate(); #if WINDOWS_PHONE_APP this.PivotHeaderPanel = (PivotHeaderPanel)this.GetTemplateChild("Header"); #else this.PivotHeaderPanel = (PivotHeaderPanel)this.GetTemplateChild("StaticHeader"); #endif this.Loaded += (s, e) => UpdateHeaderItemsOpacity(); this.DataContextChanged += (s, e) => UpdateHeaderItemsOpacity(); this.SelectionChanged += (s, e) => UpdateHeaderItemsOpacity(); }
//private static void TryStartPivotHeaderAnimation(Pivot pivot, object NewItem, object OldItem) //{ // if (NewItem == null) return; // var NewIndex = -1; // var OldIndex = -1; // if (pivot.ContainerFromItem(OldItem) is PivotItem oldContainer) // { // OldIndex = pivot.IndexFromContainer(oldContainer); // } // if (pivot.ContainerFromItem(NewItem) is PivotItem newContainer) // { // NewIndex = pivot.IndexFromContainer(newContainer); // } // if (NewIndex >= 0) // { // var name = GetName(pivot); // var Headers = pivot.VisualTreeFindAll<PivotHeaderPanel>(); // var Header = Headers.FirstOrDefault(c => c.Name == "Header"); // var StaticHeader = Headers.FirstOrDefault(c => c.Name == "StaticHeader"); // var newIndicator = GetPivotHeaderIndicator(Header, name, NewIndex); // var newStaticIndicator = GetPivotHeaderIndicator(StaticHeader, name, NewIndex); // if (OldIndex >= 0) // { // var oldIndicator = GetPivotHeaderIndicator(Header, name, OldIndex); // var oldStaticIndicator = GetPivotHeaderIndicator(StaticHeader, name, OldIndex); // if (Header != null && newIndicator != null && oldIndicator != null) // { // TryStartPivotHeaderAnimation(Header, newIndicator, oldIndicator, GetIsScaleEnabled(pivot)); // } // if (StaticHeader != null && newStaticIndicator != null && oldStaticIndicator != null) // { // TryStartPivotHeaderAnimation(StaticHeader, newStaticIndicator, oldStaticIndicator, GetIsScaleEnabled(pivot)); // } // } // else // { // if (newIndicator != null) // { // newIndicator.Visibility = Visibility.Visible; // } // if (newStaticIndicator != null) // { // newStaticIndicator.Visibility = Visibility.Visible; // } // } // } //} private static void TryStartPivotHeaderAnimation(PivotHeaderPanel panel, FrameworkElement NewIndicator, FrameworkElement OldIndicator, bool isScaleEnabled) { NewIndicator.Visibility = Visibility.Visible; NewIndicator.UpdateLayout(); if (IsLoaded(NewIndicator)) { TryStartAnimation(NewIndicator, OldIndicator, isScaleEnabled); OldIndicator.Visibility = Visibility.Collapsed; } else { NewIndicator.Loaded += NewIndicatorLoaded; } void NewIndicatorLoaded(object sender, RoutedEventArgs args) { NewIndicator.Loaded -= NewIndicatorLoaded; TryStartAnimation(NewIndicator, OldIndicator, isScaleEnabled); NewIndicator.Visibility = Visibility.Visible; OldIndicator.Visibility = Visibility.Collapsed; } }
private static async void ClosePiovt(FrameworkElement sources) { try { PivotHeaderItem item = sources.GetParentControl <PivotHeaderItem>(); PivotHeaderPanel panel = sources.GetParentControl <PivotHeaderPanel>(); for (int i = 0; i < panel.Children.Count; i++) { var child = panel.Children[i]; if (child == item) { PivotViewModel pivot = sources.GetParentControl <Pivot>().DataContext as PivotViewModel; pivot.RemoveAt(i); return; } } } catch (Exception ex) { MessageDialog messageDialog = new MessageDialog(ex.Message); await messageDialog.ShowAsync(); } }