示例#1
0
 public async void SetState(TabLayoutType tabLayoutType)
 {
     await Helper.RunOnUI(() =>
     {
         _ = VisualStateManager.GoToState(this, tabLayoutType.ToString(), useTransitions: true);
     });
 }
示例#2
0
文件: TabContainer.cs 项目: rab000/de
 /// <summary>
 /// 初始化就需要觉得TabContainer的类型
 /// 这里涉及到后面TabItem的具体排序规则
 /// </summary>
 /// <param name="type">Type.</param>
 public TabContainer(TabLayoutType type, RectTransform tabContainerTrm)
 {
     this.type = type;
     rectTrm   = tabContainerTrm;
     if (null == TabItemDic)
     {
         TabItemDic = new Dictionary <string, TabItem> ();
     }
 }
示例#3
0
        private async void OnFrameworkElementTapped(object sender, TappedRoutedEventArgs e)
        {
            if (sender is ContentPresenter contentPresenter)
            {
                var tag = contentPresenter.Tag.ToString();
                switch (_tabLayoutType)
                {
                case TabLayoutType.Item1ContentState:
                    Item1VerticalOffset = MainScrollViewer.VerticalOffset;
                    break;

                case TabLayoutType.Item2ContentState:
                    Item2VerticalOffset = MainScrollViewer.VerticalOffset;
                    break;

                case TabLayoutType.Item3ContentState:
                    Item3VerticalOffset = MainScrollViewer.VerticalOffset;
                    break;

                case TabLayoutType.Item4ContentState:
                    Item4VerticalOffset = MainScrollViewer.VerticalOffset;
                    break;

                case TabLayoutType.Item5ContentState:
                    Item5VerticalOffset = MainScrollViewer.VerticalOffset;
                    break;

                case TabLayoutType.Item6ContentState:
                    Item6VerticalOffset = MainScrollViewer.VerticalOffset;
                    break;

                default:
                    break;
                }
                await Task.Delay(100).ConfigureAwait(false);

                _tabLayoutType = (TabLayoutType)Enum.Parse(typeof(TabLayoutType), tag);
                SetState(_tabLayoutType);
                await Task.Delay(100).ConfigureAwait(false);

                switch (_tabLayoutType)
                {
                case TabLayoutType.Item1ContentState:
                    if (Item1VerticalOffset > 0)
                    {
                        ScrollToVerticalOffset(Item1VerticalOffset);
                    }
                    if (!Item1Init)
                    {
                        RefreshAction1?.Invoke();
                        Item1Init = true;
                    }
                    break;

                case TabLayoutType.Item2ContentState:
                    if (Item2VerticalOffset > 0)
                    {
                        ScrollToVerticalOffset(Item2VerticalOffset);
                    }
                    if (!Item2Init)
                    {
                        RefreshAction2?.Invoke();
                        Item2Init = true;
                    }
                    break;

                case TabLayoutType.Item3ContentState:
                    if (Item3VerticalOffset > 0)
                    {
                        ScrollToVerticalOffset(Item3VerticalOffset);
                    }
                    if (!Item3Init)
                    {
                        RefreshAction3?.Invoke();
                        Item3Init = true;
                    }
                    break;

                case TabLayoutType.Item4ContentState:
                    if (Item4VerticalOffset > 0)
                    {
                        ScrollToVerticalOffset(Item4VerticalOffset);
                    }
                    if (!Item4Init)
                    {
                        RefreshAction4?.Invoke();
                        Item4Init = true;
                    }
                    break;

                case TabLayoutType.Item5ContentState:
                    if (Item5VerticalOffset > 0)
                    {
                        ScrollToVerticalOffset(Item5VerticalOffset);
                    }
                    if (!Item5Init)
                    {
                        RefreshAction5?.Invoke();
                        Item5Init = true;
                    }
                    break;

                case TabLayoutType.Item6ContentState:
                    if (Item6VerticalOffset > 0)
                    {
                        ScrollToVerticalOffset(Item6VerticalOffset);
                    }
                    if (!Item6Init)
                    {
                        RefreshAction6?.Invoke();
                        Item6Init = true;
                    }
                    break;

                default:
                    break;
                }
            }
            async void ScrollToVerticalOffset(double offset)
            {
                await Helper.RunOnUI(() =>
                {
                    MainScrollViewer.ScrollToVerticalOffset(offset);
                });
            }
        }