public TabViewHeader()
        {
            this.InitializeComponent();

            // >> tabview-features-tabviewheader-csharp
            RadTabView tabView = new RadTabView()
            {
                HeaderPosition = TabViewHeaderPosition.Bottom,
                Header         = new Telerik.XamarinForms.Primitives.TabViewHeader()
                {
                    BackgroundColor        = (Color)(new ColorTypeConverter()).ConvertFromInvariantString("#293955"),
                    OverflowButtonTemplate = new DataTemplate(() =>
                    {
                        return(new Label()
                        {
                            Text = " + ",
                            BackgroundColor = (Color)(new ColorTypeConverter()).ConvertFromInvariantString("#CA5100"),
                            Margin = new Thickness(3, 0, 3, 0)
                        });
                    }),
                }
            };

            for (int i = 1; i <= 13; i++)
            {
                tabView.Items.Add(new Telerik.XamarinForms.Primitives.TabViewItem()
                {
                    HeaderText = string.Format("Tab{0} ", i)
                });
            }
            // << tabview-features-tabviewheader-csharp
        }
        public TabViewItem()
        {
            this.InitializeComponent();

            // >> tabview-features-tabviewitem-csharp
            RadTabView tabView = new RadTabView();

            Telerik.XamarinForms.Primitives.TabViewItem homeTab = new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "Home",
                Content    = new Label()
                {
                    Text   = "This is the content of the Home tab",
                    Margin = new Thickness(10)
                },
            };
            Telerik.XamarinForms.Primitives.TabViewItem viewTab = new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "View",
                Content    = new Label()
                {
                    Text   = "This is the content of the View tab",
                    Margin = new Thickness(10)
                },
            };
            StackLayout folderTabHeaderPanel = new StackLayout()
            {
                Orientation = StackOrientation.Horizontal,
                Margin      = new Thickness(5, 0, 0, 0),
            };

            folderTabHeaderPanel.Children.Add(new ContentView()
            {
                BackgroundColor = (Color)(new ColorTypeConverter()).ConvertFromInvariantString("#CA5100"),
                WidthRequest    = 10,
                HeightRequest   = 10,
                VerticalOptions = LayoutOptions.Center,
            });
            folderTabHeaderPanel.Children.Add(new Label()
            {
                Text = "Folder"
            });
            Telerik.XamarinForms.Primitives.TabViewItem folderTab = new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                Header = new TabViewHeaderItem()
                {
                    Content = folderTabHeaderPanel
                },
                Content = new Label()
                {
                    Text   = "This is the content of the Folder tab",
                    Margin = new Thickness(10)
                },
            };

            tabView.Items.Add(homeTab);
            tabView.Items.Add(viewTab);
            tabView.Items.Add(folderTab);
            // << tabview-features-tabviewitem-csharp
        }
        private static void ItemsSourceChanged(BindableObject bindable, object oldValue, object newValue)
        {
            RadTabView  tabView        = (RadTabView)bindable;
            IEnumerable newItemsSource = (IEnumerable)newValue;

            RemoveAllTabViewItems(tabView);
            INotifyCollectionChanged itemsSource = oldValue as INotifyCollectionChanged;

            if (itemsSource != null)
            {
                itemsSource.CollectionChanged -= ItemsSource_CollectionChanged;
                RemoveFromInfo(itemsSource, tabView);
            }

            if (newItemsSource != null)
            {
                foreach (object item in newItemsSource)
                {
                    AddTabViewItem(tabView, item);
                }

                itemsSource = newValue as INotifyCollectionChanged;
                if (itemsSource != null)
                {
                    itemsSource.CollectionChanged += ItemsSource_CollectionChanged;
                    AddToInfo(itemsSource, tabView);
                }
            }
        }
 private static void RemoveAllTabViewItems(RadTabView tabView)
 {
     for (int i = tabView.Items.Count - 1; i >= 0; i--)
     {
         RemoveTabViewItem(tabView, i);
     }
 }
 private static void RemoveTabViewItem(RadTabView tabView, int i)
 {
     Telerik.XamarinForms.Primitives.TabViewItem tabItem = tabView.Items[i];
     tabItem.BindingContext         = null;
     tabItem.Header.ControlTemplate = null;
     tabItem.Content = null;
     tabView.Items.RemoveAt(i);
 }
        private static void RemoveTabViewItem(RadTabView tabView, int i)
        {
            TabViewItem tabItem = tabView.Items[i];

            tabItem.BindingContext         = null;
            tabItem.Header.ControlTemplate = null;
            tabItem.Content = null;
            tabView.Items.RemoveAt(i);
        }
        private static void ItemHeaderTemplateChanged(BindableObject bindable, object oldValue, object newValue)
        {
            RadTabView      tabView  = (RadTabView)bindable;
            ControlTemplate template = (ControlTemplate)newValue;

            foreach (TabViewItem tabItem in tabView.Items)
            {
                tabItem.Header.ControlTemplate = template;
            }
        }
 private static void InsertTabViewItem(RadTabView tabView, object item, int index)
 {
     Telerik.XamarinForms.Primitives.TabViewItem tabItem = new Telerik.XamarinForms.Primitives.TabViewItem();
     tabItem.Header.ControlTemplate = GetItemHeaderTemplate(tabView);
     tabItem.BindingContext         = item;
     tabItem.Content = new BindableView {
         ControlTemplate = GetItemContentTemplate(tabView)
     };
     tabView.Items.Insert(index, tabItem);
 }
        private static void AddToInfo(INotifyCollectionChanged itemsSource, RadTabView tabView)
        {
            if (itemsSource == null)
            {
                return;
            }

            Info info = GetOrCreateInfo(itemsSource);

            info.tabViews.Add(new WeakReference(tabView));
        }
        private static void ItemContentTemplateChanged(BindableObject bindable, object oldValue, object newValue)
        {
            RadTabView      tabView  = (RadTabView)bindable;
            ControlTemplate template = (ControlTemplate)newValue;

            foreach (Telerik.XamarinForms.Primitives.TabViewItem tabItem in tabView.Items)
            {
                tabItem.Content = new BindableView {
                    ControlTemplate = template
                };
            }
        }
        private static void RemoveFromInfo(INotifyCollectionChanged itemsSource, RadTabView tabView)
        {
            if (itemsSource == null)
            {
                return;
            }

            Info info = TryGetInfo(itemsSource);

            if (info != null)
            {
                info.tabViews.RemoveAll(wr => wr.Target == tabView);
            }
        }
        private static void ItemsSource_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            INotifyCollectionChanged itemsSource = (INotifyCollectionChanged)sender;
            Info info = TryGetInfo(itemsSource);

            if (info == null)
            {
                return;
            }

            foreach (WeakReference wr in info.tabViews)
            {
                RadTabView tabView = (RadTabView)wr.Target;
                if (tabView == null)
                {
                    continue;
                }

                switch (e.Action)
                {
                case NotifyCollectionChangedAction.Add:
                    AddTabViewItem(tabView, e.NewItems[0]);
                    break;

                case NotifyCollectionChangedAction.Move:
                    tabView.Items.Move(e.OldStartingIndex, e.NewStartingIndex);
                    break;

                case NotifyCollectionChangedAction.Remove:
                    RemoveTabViewItem(tabView, e.OldStartingIndex);
                    break;

                case NotifyCollectionChangedAction.Replace:
                    RemoveTabViewItem(tabView, e.OldStartingIndex);
                    InsertTabViewItem(tabView, e.NewItems[0], e.NewStartingIndex);
                    break;

                case NotifyCollectionChangedAction.Reset:
                    RemoveAllTabViewItems(tabView);
                    break;

                default:
                    break;
                }
            }
        }
Пример #13
0
        public Selection()
        {
            // >> tabview-features-selection-csharp
            RadTabView tabView = new RadTabView();

            tabView.Items.Add(new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "Home"
            });
            tabView.Items.Add(new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "Folder"
            });
            tabView.Items.Add(new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "View"
            });

            tabView.SelectedItem = tabView.Items[1];
            // << tabview-features-selection-csharp

            this.Content = tabView;
        }
        public TabViewGettingStartedCSharp()
        {
            // >> tabview-getting-started-csharp
            RadTabView tabView = new RadTabView();

            Telerik.XamarinForms.Primitives.TabViewItem homeTab = new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "Home",
                Content    = new Label()
                {
                    Text = "This is the content of the Home tab", Margin = new Thickness(10)
                },
            };
            Telerik.XamarinForms.Primitives.TabViewItem folderTab = new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "Folder",
                Content    = new Label()
                {
                    Text = "This is the content of the Folder tab", Margin = new Thickness(10)
                },
            };
            Telerik.XamarinForms.Primitives.TabViewItem viewTab = new Telerik.XamarinForms.Primitives.TabViewItem()
            {
                HeaderText = "View",
                Content    = new Label()
                {
                    Text = "This is the content of the View tab", Margin = new Thickness(10)
                },
            };
            tabView.Items.Add(homeTab);
            tabView.Items.Add(folderTab);
            tabView.Items.Add(viewTab);
            // << tabview-getting-started-csharp

            this.Content = tabView;
        }
 private static void AddTabViewItem(RadTabView tabView, object item)
 {
     InsertTabViewItem(tabView, item, tabView.Items.Count);
 }