Ejemplo n.º 1
0
        public void SetElement(VisualElement element)
        {
            if (element != null && !(element is TabbedPage))
            {
                throw new ArgumentException("Element must be a TabbedPage", "element");
            }

            TabbedPage oldElement = Element;

            Element = (TabbedPage)element;

            if (oldElement != null)
            {
                oldElement.PropertyChanged -= OnElementPropertyChanged;
                ((INotifyCollectionChanged)oldElement.Children).CollectionChanged -= OnPagesChanged;
                Control?.GetDescendantsByName <TextBlock>(TabBarHeaderTextBlockName).ForEach(t => { t.AccessKeyInvoked -= AccessKeyInvokedForTab; });
            }

            if (element != null)
            {
                if (Control == null)
                {
                    Control = new FormsPivot {
                        Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TabbedPageStyle"],
                    };

                    Control.SelectionChanged += OnSelectionChanged;

                    Tracker = new BackgroundTracker <Pivot>(Windows.UI.Xaml.Controls.Control.BackgroundProperty)
                    {
                        Element   = (Page)element,
                        Control   = Control,
                        Container = Control
                    };

                    Control.Loaded   += OnLoaded;
                    Control.Unloaded += OnUnloaded;
                }

                Control.DataContext = Element;
                OnPagesChanged(Element.Children,
                               new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));

                UpdateCurrentPage();
                UpdateToolbarPlacement();
                UpdateToolbarDynamicOverflowEnabled();

                ((INotifyCollectionChanged)Element.Children).CollectionChanged += OnPagesChanged;
                element.PropertyChanged += OnElementPropertyChanged;

                if (!string.IsNullOrEmpty(element.AutomationId))
                {
                    Control.SetValue(Windows.UI.Xaml.Automation.AutomationProperties.AutomationIdProperty, element.AutomationId);
                }
            }

            OnElementChanged(new VisualElementChangedEventArgs(oldElement, element));
        }
Ejemplo n.º 2
0
        public void SetElement(VisualElement element)
        {
            if (element != null && !(element is TabbedPage))
            {
                throw new ArgumentException("Element must be a TabbedPage", "element");
            }

            TabbedPage oldElement = Element;

            Element = (TabbedPage)element;

            if (oldElement != null)
            {
                oldElement.PropertyChanged -= OnElementPropertyChanged;
                ((INotifyCollectionChanged)oldElement.Children).CollectionChanged -= OnPagesChanged;
            }

            if (element != null)
            {
                if (Control == null)
                {
                    Control = new FormsPivot {
                        Style = (Windows.UI.Xaml.Style)Windows.UI.Xaml.Application.Current.Resources["TabbedPageStyle"],
                    };

                    Control.SelectionChanged += OnSelectionChanged;

                    Tracker = new BackgroundTracker <Pivot>(Windows.UI.Xaml.Controls.Control.BackgroundProperty)
                    {
                        Element = (Page)element, Control = Control, Container = Control
                    };

                    Control.Loaded   += OnLoaded;
                    Control.Unloaded += OnUnloaded;
                }

                Control.DataContext = Element;
                OnPagesChanged(Element.Children, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
                UpdateCurrentPage();
                UpdateBarTextColor();
                UpdateBarBackgroundColor();

                ((INotifyCollectionChanged)Element.Children).CollectionChanged += OnPagesChanged;
                element.PropertyChanged += OnElementPropertyChanged;

                if (!string.IsNullOrEmpty(element.AutomationId))
                {
                    Control.SetValue(AutomationProperties.AutomationIdProperty, element.AutomationId);
                }
            }


            OnElementChanged(new VisualElementChangedEventArgs(oldElement, element));
        }