示例#1
0
        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();
        }
示例#2
0
        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));
        }
示例#4
0
        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;
            }
        }
示例#6
0
        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();
            }
        }