Beispiel #1
0
        internal void SaveState(Dictionary <string, object> pageState)
        {
            if (Root.ItemsPanelRoot == null)
            {
                return;
            }

            ItemsStackPanel stackPanel = Root.ItemsPanelRoot as ItemsStackPanel;

            if (stackPanel != null)
            {
                pageState.Add(LAST_INDEX_KEY, stackPanel.LastVisibleIndex);
            }
            else
            {
                ItemsWrapGrid wrapGrid = Root.ItemsPanelRoot as ItemsWrapGrid;

                if (wrapGrid != null)
                {
                    pageState.Add(LAST_INDEX_KEY, wrapGrid.LastVisibleIndex);
                }
                else
                {
                    DebugHelper.Alert(new CallerInfo(), "Unexpected root type: {0}", Root.ItemsPanelRoot.GetType());
                }
            }
        }
Beispiel #2
0
        private async void OnLoaded(object sender, RoutedEventArgs e)
        {
            var panel = ItemsPanelRoot as ItemsStackPanel;

            if (panel != null)
            {
                ItemsStack              = panel;
                ItemsStack.SizeChanged += Panel_SizeChanged;

                SetScrollMode();
            }

            using (await _loadMoreLock.WaitAsync())
            {
                if (ScrollingHost.ScrollableHeight < 200 && Items.Count > 0)
                {
                    if (ViewModel.IsFirstSliceLoaded != true)
                    {
                        await ViewModel.LoadPreviousSliceAsync(false, true);
                    }

                    await ViewModel.LoadNextSliceAsync(false, true);
                }
            }
        }
        private void OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            if (sender is ScrollViewer scrollingHost)
            {
                ViewModel.VerticalOffset = scrollingHost.VerticalOffset;

                if (DateHeaderLabel == null)
                {
                    return;
                }

                var index = ScrollingHost.ItemsPanelRoot switch
                {
                    ItemsStackPanel stackPanel => stackPanel.FirstVisibleIndex,
                    ItemsWrapGrid wrapGrid => wrapGrid.FirstVisibleIndex,
                    _ => - 1
                };

                var container = ScrollingHost.ContainerFromIndex(index) as SelectorItem;
                if (container == null || container.Tag is not Message message)
                {
                    return;
                }

                DateHeaderLabel.Text = Converter.MonthGrouping(Utils.UnixTimestampToDateTime(message.Date));

                _dateHeaderTimer.Stop();
                _dateHeaderTimer.Start();
                ShowHideDateHeader(scrollingHost.VerticalOffset > ProfileHeader.ActualHeight, true);
            }
        }
 private void ListViewEx_Loaded(object sender, RoutedEventArgs e)
 {
     this.Loaded -= ListViewEx_Loaded;
     _scrollViewer = this.FindFirstChild<ScrollViewer>();
     if (_scrollViewer != null)
         _scrollViewer.ViewChanged += Sv_ViewChanged;
     _panel = ItemsPanelRoot as ItemsStackPanel;
 }
 /// <summary>
 /// UI Initialized
 /// </summary>
 private void ItemsStackPanel_Loaded(object sender, RoutedEventArgs e)
 {
     _messageScrollviewer = Common.GetScrollViewer(MessageList);
     if (_messageScrollviewer != null)
     {
         _messageScrollviewer.ViewChanged += MessageScrollviewer_ViewChanged;
     }
     _messageStacker = sender as ItemsStackPanel;
 }
Beispiel #6
0
 /// <summary>
 /// Finds ItemStackPanel and MessageScroller from MessageList once loaded.
 /// </summary>
 private void ItemsStackPanel_Loaded(object sender, RoutedEventArgs e)
 {
     _messageScrollViewer = MessageList.FindChild <ScrollViewer>();
     _itemsStackPanel     = sender as ItemsStackPanel;
     if (_messageScrollViewer != null)
     {
         _messageScrollViewer.ViewChanged += MessageScrollViewer_ViewChanged;
     }
 }
Beispiel #7
0
        private static async void InternalModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            AdaptiveCollectionView     obj   = (AdaptiveCollectionView)d;
            AdaptiveCollectionViewMode value = (AdaptiveCollectionViewMode)e.NewValue;

            if (Enum.IsDefined(typeof(AdaptiveCollectionViewMode), value) == false)
            {
                throw new ArgumentException($"{nameof(AdaptiveCollectionViewMode)} is not defined", nameof(value));
            }

            int index = -1;

            if (obj.Items.Count > 0)
            {
                ItemsStackPanel stackPanel = obj.ItemsPanelRoot as ItemsStackPanel;
                if (stackPanel != null)
                {
                    index = stackPanel.FirstVisibleIndex;
                }

                ItemsWrapGrid wrapGrid = obj.ItemsPanelRoot as ItemsWrapGrid;
                if (wrapGrid != null)
                {
                    index = wrapGrid.FirstVisibleIndex;
                }
            }

            if (value == AdaptiveCollectionViewMode.List)
            {
                obj.ItemsPanel = obj._itemsStackPanel;
            }
            else
            {
                obj.ItemsPanel = obj._itemsWrapGrid;
            }

            if (obj.ModeChanged != null)
            {
                obj.ModeChanged(obj, new AdaptiveCollectionViewModeChangedEventArgs((AdaptiveCollectionViewMode)e.OldValue, (AdaptiveCollectionViewMode)e.NewValue));
            }

            await obj.WaitForLayoutUpdatedAsync();

            if (obj.SelectedItem != null)
            {
                obj.ScrollIntoView(obj.SelectedItem, ScrollIntoViewAlignment.Leading);
            }
            else if (index > -1)
            {
                var item = obj.Items.ElementAtOrDefault(index);
                if (item != null)
                {
                    obj.ScrollIntoView(item, ScrollIntoViewAlignment.Leading);
                }
            }
        }
Beispiel #8
0
 private void ListViewOnLoaded(object sender, RoutedEventArgs e)
 {
     _listView.DragItemsStarting += ListViewBase_OnDragItemsStarting;
     if (_listView.ItemsPanelRoot is ItemsStackPanel itemsStackPanel)
     {
         _listViewItemsPanelRoot = itemsStackPanel;
     }
     _listView.DragEnter += ListViewOnDragEnter;
     _listView.DragLeave += ListViewOnDragLeave;
 }
        private void lvw_Lessons_Monday_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if ((sender as ListView).SelectionMode == ListViewSelectionMode.Single && (sender as ListView).SelectedIndex != -1)
            {
                ListView        listview   = (ListView)sender;
                ItemsStackPanel itemspanel = (ItemsStackPanel)listview.ItemsPanelRoot;
                ListViewItem    item       = (ListViewItem)itemspanel.Children[(sender as ListView).SelectedIndex];
                Grid            rootgrid   = (Grid)item.ContentTemplateRoot;

                toggle_StackPanel((rootgrid.Children[1] as StackPanel));
            }
        }
 private async Task LoadMoreItemsAsync(ItemsStackPanel itemsStackPanel)
 {
     if (!SupportIncrementalLoading.HasMoreItems)
     {
         return;
     }
     // This is to handle the case when the InternalLoadMoreItemsAsync
     // does not fill the entire space of the ListView.
     // This event is needed untill the desired size of itemsStackPanel
     // is less then the available space.
     itemsStackPanel.LayoutUpdated += OnLayoutUpdated;
     await InternalLoadMoreItemsAsync();
 }
Beispiel #11
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            var panel = ItemsPanelRoot as ItemsStackPanel;

            if (panel != null)
            {
                ItemsStack = panel;
                ItemsStack.ItemsUpdatingScrollMode = UpdatingScrollMode == UpdatingScrollMode.KeepItemsInView || UpdatingScrollMode == UpdatingScrollMode.ForceKeepItemsInView
                    ? ItemsUpdatingScrollMode.KeepItemsInView
                    : ItemsUpdatingScrollMode.KeepLastItemInView;
                ItemsStack.SizeChanged += Panel_SizeChanged;
            }
        }
 private void ListViewOnUnloaded(object sender, RoutedEventArgs e)
 {
     if (_scrollViewer != null)
     {
         _scrollViewer.ViewChanged -= ScrollViewerOnViewChanged;
     }
     _scrollViewer = null;
     if (_itemsStackPanel != null)
     {
         _itemsStackPanel.SizeChanged -= ItemsStackPanelOnSizeChanged;
     }
     _itemsStackPanel = null;
 }
Beispiel #13
0
        /// <summary>
        /// Delete the current song
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteSongClick(object sender, RoutedEventArgs e)
        {
            AppBarButton button = (AppBarButton)sender;
            Song         song   = (Song)button.DataContext;

            ItemsStackPanel parent = (ItemsStackPanel)VisualTreeHelper.GetParent(
                VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(
                                               VisualTreeHelper.GetParent((AppBarButton)sender))));
            Season s = (Season)parent.DataContext;

            int index = s.Songs.ToList().FindIndex(cur => cur == song);

            s.Songs.RemoveAt(index);
        }
Beispiel #14
0
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);

            // First populate our local variable for referencing ItemsStackPanel for the first time.
            if (!_isFirstItemContainerLoaded && _virtualizedPanel == null)
            {
                _virtualizedPanel = ItemsPanelRoot as ItemsStackPanel;
            }

            this.PrepareContainerForItemOverrideEx <ListViewItem>(
                element,
                () => (_virtualizedPanel.FirstVisibleIndex, _virtualizedPanel.LastVisibleIndex),
                ref _isFirstItemContainerLoaded);
        }
Beispiel #15
0
        private void ItemsStackPanelDemo_Loaded(object sender, RoutedEventArgs e)
        {
            DispatcherTimer dTimer = new DispatcherTimer();

            dTimer.Interval = TimeSpan.Zero;
            dTimer.Tick    += DTimer_Tick;
            dTimer.Start();

            // 获取 ListView 中的 ItemsStackPanel 控件
            _itemsStackPanel1 = listView1.ItemsPanelRoot as ItemsStackPanel;
            _itemsStackPanel2 = listView2.ItemsPanelRoot as ItemsStackPanel;

            // 获取 ListView 中的 ItemsStackPanel 控件
            // _itemsStackPanel1 = Helper.GetVisualChild<ItemsStackPanel>(listView1);
            // _itemsStackPanel2 = Helper.GetVisualChild<ItemsStackPanel>(listView2);
        }
Beispiel #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            List <ScrollViewer> list = new List <ScrollViewer>();

            HomeHelper.FindChildren <ScrollViewer>(list, listStories);  //先找到ScrollViewer 注册ViewChanged事件
            if (list.Count > 0)
            {
                _scrollView              = list[0];
                _scrollView.ViewChanged += HomePage_ViewChanged;
            }
            List <ItemsStackPanel> list2 = new List <ItemsStackPanel>();

            HomeHelper.FindChildren <ItemsStackPanel>(list2, listStories);  //找到ItemStackPanel 它包含FirstVisibleIndex属性
            if (list.Count > 0)
            {
                _itemsPanel = list2[0];
            }
        }
Beispiel #17
0
        private async void OnLoaded(object sender, RoutedEventArgs e)
        {
            var panel = ItemsPanelRoot as ItemsStackPanel;

            if (panel != null)
            {
                ItemsStack              = panel;
                ItemsStack.SizeChanged += Panel_SizeChanged;
            }

            if (IncrementalSource != null && IncrementalSource.HasMoreItems && !_isAlreadyLoading)
            {
                _isAlreadyLoading = true;
                await IncrementalSource.LoadMoreItemsAsync(0);

                _isAlreadyLoading = false;
            }
        }
        private async void ListViewOnLoaded(object sender, RoutedEventArgs e)
        {
            if (!(_listView.ItemsPanelRoot is ItemsStackPanel itemsStackPanel))
            {
                return;
            }

            _itemsStackPanel = itemsStackPanel;

            _scrollViewer = VisualTreeHelperUtils.Child <ScrollViewer>(_listView);

            // This event handler loads more items when scrolling.
            _scrollViewer.ViewChanged += ScrollViewerOnViewChanged;

            // This event handler loads more items when size is changed and there is more
            // room in ListView.
            _itemsStackPanel.SizeChanged += ItemsStackPanelOnSizeChanged;

            await LoadMoreItemsAsync(itemsStackPanel);
        }
Beispiel #19
0
        private void AutoSelectParagraph()
        {
            if (ParaVisualizer == null)
            {
                ParaVisualizer = ContentGrid.ChildAt <ItemsStackPanel>(0, 0, 0, 0, 0, 0, 1);
                if (ParaVisualizer == null)
                {
                    return;
                }
            }

            Rect ScreenBounds = IsHorz ? new Rect(0, 0, ActualWidth * 0.8, ActualHeight) : new Rect(0, 0, ActualWidth, ActualHeight * 0.8);

            if (VisibleParagraph != null && VisibleContext?.DataContext?.Equals(SelectedParagraph) == true)
            {
                if (VisualTreeHelper.FindElementsInHostCoordinates(ScreenBounds, ParaVisualizer).Contains(VisibleParagraph))
                {
                    return;
                }
            }

            int l = ParaVisualizer.Children.Count();

            for (int i = 0; i < l; i++)
            {
                FrameworkElement Item = ( FrameworkElement )ParaVisualizer.Children[i];
                if (VisualTreeHelper.FindElementsInHostCoordinates(ScreenBounds, ParaVisualizer).Contains(Item))
                {
                    FrameworkElement _ContentPresenter = Item.ChildAt <FrameworkElement>(0, 0, 1);
                    if (_ContentPresenter?.DataContext is Paragraph P)
                    {
                        VisibleParagraph         = Item;
                        VisibleContext           = _ContentPresenter;
                        SelectedParagraph        = P;
                        ContentGrid.SelectedItem = P;
                        Reader.SelectAndAnchor(P);
                        break;
                    }
                }
            }
        }
Beispiel #20
0
        /// <summary>
        /// 列表对象加载完成后的逻辑代码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ListView_Loaded(object sender, RoutedEventArgs e)
        {
            //查找滚动视图,并赋值到我们刚刚添加的属性里
            scroll = FindVisualChild <ScrollViewer>(ListView, "ScrollViewer");
            //判断是否为空,不为空的话就添加一个事件
            if (scroll == null)
            {
                return;
            }
            else
            {
                //监听滚动事件
                scroll.ViewChanged += Scroll_ViewChanged;
            }


            ItemsPresenter v = FindVisualChild <ItemsPresenter>(ListView, "");

            ItemsStackPanel items = FindVisualChild <ItemsStackPanel>(v, "");

            _panelOrientation = items.Orientation;
        }
Beispiel #21
0
        private async void OnLoaded(object sender, RoutedEventArgs e)
        {
            var panel = ItemsPanelRoot as ItemsStackPanel;

            if (panel != null)
            {
                ItemsStack              = panel;
                ItemsStack.SizeChanged += Panel_SizeChanged;

                SetScrollMode();
            }

            if (ScrollingHost.ScrollableHeight < 120 && Items.Count > 0)
            {
                if (!ViewModel.IsFirstSliceLoaded)
                {
                    await ViewModel.LoadPreviousSliceAsync(false, ItemsStack.LastVisibleIndex == ItemsStack.LastCacheIndex);
                }

                await ViewModel.LoadNextSliceAsync();
            }
        }
        private void MemberListControl_OnLoaded(object sender, RoutedEventArgs e)
        {
            // Todo: sticky headers
            ScrollViewer    sv = FindChildOfType <ScrollViewer>(MemberList);
            ItemsStackPanel sp = FindChildOfType <ItemsStackPanel>(sv);

            timer = new Timer(
                (state) =>
            {
                double top    = sv.VerticalOffset;
                double bottom = sv.VerticalOffset + sv.ViewportHeight;
                double total  = sv.ScrollableHeight + sv.ViewportHeight;
                ViewModel.UpdateGuildSubscriptionsCommand.Execute((top / total, bottom / total));
            },
                null,
                Timeout.Infinite,
                Timeout.Infinite);
            sv.ViewChanging += (sender1, args) =>
            {
                long currentTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();

                if (currentTime - lastTime > 100)
                {
                    timer.Change(Timeout.Infinite, Timeout.Infinite);
                    double top    = sv.VerticalOffset;
                    double bottom = sv.VerticalOffset + sv.ViewportHeight;
                    double total  = sv.ScrollableHeight + sv.ViewportHeight;
                    ViewModel.UpdateGuildSubscriptionsCommand.Execute((top / total, bottom / total));
                }
                else
                {
                    timer.Change(110, Timeout.Infinite);
                }

                lastTime = currentTime;
            };
        }
Beispiel #23
0
 private void StackPanel_loaded(object sender, RoutedEventArgs e)
 {
     stackPanelObj = sender as ItemsStackPanel;
 }
        private void View_PointerMoved(object sender, PointerRoutedEventArgs e)
        {
            if (IsEnabled && e.Pointer.PointerDeviceType == PointerDeviceType.Mouse && e.GetCurrentPoint(View).Properties.IsLeftButtonPressed)
            {
                if (Interlocked.Exchange(ref Locker, 1) == 0)
                {
                    try
                    {
                        Point RelativeEndPoint = e.GetCurrentPoint(View).Position;
                        SrcollIfNeed(RelativeEndPoint);

                        Point AbsEndPoint        = new Point(RelativeEndPoint.X + InnerScrollView.HorizontalOffset, RelativeEndPoint.Y + InnerScrollView.VerticalOffset);
                        Point RelativeStartPoint = new Point(AbsStartPoint.X - InnerScrollView.HorizontalOffset, AbsStartPoint.Y - InnerScrollView.VerticalOffset);

                        DrawRectangleInCanvas(RelativeStartPoint, RelativeEndPoint);

                        if (Math.Abs(RelativeStartPoint.X - RelativeEndPoint.X) >= 20 && Math.Abs(RelativeStartPoint.Y - RelativeEndPoint.Y) >= 20)
                        {
                            List <FileSystemStorageItemBase> VisibleList = new List <FileSystemStorageItemBase>();

                            if (View is ListView)
                            {
                                ItemsStackPanel VirtualPanel = View.ItemsPanelRoot as ItemsStackPanel;

                                for (int i = VirtualPanel.FirstVisibleIndex; i <= VirtualPanel.LastVisibleIndex; i++)
                                {
                                    VisibleList.Add(View.Items[i] as FileSystemStorageItemBase);
                                }
                            }
                            else
                            {
                                ItemsWrapGrid VirtualPanel = View.ItemsPanelRoot as ItemsWrapGrid;

                                for (int i = VirtualPanel.FirstVisibleIndex; i <= VirtualPanel.LastVisibleIndex; i++)
                                {
                                    VisibleList.Add(View.Items[i] as FileSystemStorageItemBase);
                                }
                            }

                            foreach (FileSystemStorageItemBase Item in VisibleList.Except(AbsItemLocationRecord.Select((Rec) => Rec.Key)))
                            {
                                if (View.ContainerFromItem(Item) is SelectorItem Selector)
                                {
                                    AbsItemLocationRecord.Add(new KeyValuePair <FileSystemStorageItemBase, Rect>(Item, Selector.TransformToVisual(View).TransformBounds(new Rect(InnerScrollView.HorizontalOffset, InnerScrollView.VerticalOffset, Selector.ActualWidth, Selector.ActualHeight))));
                                }
                            }

                            Rect AbsBoxSelectionRect = new Rect(Math.Min(AbsStartPoint.X, AbsEndPoint.X), Math.Min(AbsStartPoint.Y, AbsEndPoint.Y), Math.Abs(AbsStartPoint.X - AbsEndPoint.X), Math.Abs(AbsStartPoint.Y - AbsEndPoint.Y));

                            foreach (KeyValuePair <FileSystemStorageItemBase, Rect> Pair in AbsItemLocationRecord)
                            {
                                Rect Intersect = RectHelper.Intersect(AbsBoxSelectionRect, Pair.Value);

                                if (!Intersect.IsEmpty && Intersect.Width > 0 && Intersect.Height > 0)
                                {
                                    if (!View.SelectedItems.Contains(Pair.Key))
                                    {
                                        View.SelectedItems.Add(Pair.Key);
                                    }
                                }
                                else
                                {
                                    View.SelectedItems.Remove(Pair.Key);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        LogTracer.Log(ex);
                    }
                    finally
                    {
                        _ = Interlocked.Exchange(ref Locker, 0);
                    }
                }
            }
        }