void DisposeItemsViewF9PImages(ItemsView itemsView) { foreach (var child in itemsView.LogicalChildren) { DisposeElement(child); } }
public ItemsSourceGenerator(ItemsView cv, int initialItems = 1000, ItemsSourceType itemsSourceType = ItemsSourceType.List) { _cv = cv; _itemsSourceType = itemsSourceType; var layout = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Fill }; var button = new Button { Text = "Update", AutomationId = "btnUpdate" }; var label = new Label { Text = "Item count:", VerticalTextAlignment = TextAlignment.Center }; _entry = new Entry { Keyboard = Keyboard.Numeric, Text = initialItems.ToString(), WidthRequest = 200, AutomationId = "entryUpdate" }; layout.Children.Add(label); layout.Children.Add(_entry); layout.Children.Add(button); button.Clicked += GenerateItems; Content = layout; }
public ItemsSourceGenerator(ItemsView cv, int initialItems = 1000, ItemsSourceType itemsSourceType = ItemsSourceType.List) { _count = initialItems; _cv = cv; _itemsSourceType = itemsSourceType; var layout = new StackLayout { Orientation = StackOrientation.Horizontal, HorizontalOptions = LayoutOptions.Fill }; var button = new Button { Text = "Update", AutomationId = "btnUpdate" }; var label = new Label { Text = "Item count:", VerticalTextAlignment = TextAlignment.Center }; _entry = new Entry { Keyboard = Keyboard.Numeric, Text = initialItems.ToString(), WidthRequest = 200, AutomationId = "entryUpdate" }; layout.Children.Add(label); layout.Children.Add(_entry); layout.Children.Add(button); button.Clicked += GenerateItems; MessagingCenter.Subscribe <ExampleTemplateCarousel>(this, "remove", (obj) => { (cv.ItemsSource as ObservableCollection <CollectionViewGalleryTestItem>).Remove(obj.BindingContext as CollectionViewGalleryTestItem); }); Content = layout; }
/// <summary> /// Reacts on any property change of any item in <see cref="Items" />. /// </summary> /// <param name="sender">The item that has a changed property.</param> /// <param name="e">The event args.</param> public virtual void OnItemPropertyChanged(object sender, PropertyChangedEventArgs e) { if (RefreshViewOnItemChange) { ItemsView.Refresh(); } }
private async Task RefreshPlaylistItems() { await _dispatcherQueue.EnqueueAsync(async() => { NowLoading.Value = true; try { using (ItemsView.DeferRefresh()) { _sourcePlaylistItems.Clear(); // TODO: タイムアウト処理を追加する using var _ = await _niconicoSession.SigninLock.LockAsync(); await _userMylistManager.WaitUpdate(); foreach (var item in _userMylistManager.Mylists.Where(x => x.MylistId.IsWatchAfterMylist is false)) { _sourcePlaylistItems.Add(item); } } } finally { NowLoading.Value = false; } AddMylistGroupCommand.NotifyCanExecuteChanged(); }); }
protected override void SetUpNewElement(ItemsView newElement) { base.SetUpNewElement(newElement); if (newElement == null) { return; } if (ItemsView != null) { ItemsView.SelectionChanged += FormsSelectionChanged; } var newListViewBase = ListViewBase; if (newListViewBase != null) { newListViewBase.SetBinding(ListViewBase.SelectionModeProperty, new Windows.UI.Xaml.Data.Binding { Source = ItemsView, Path = new Windows.UI.Xaml.PropertyPath("SelectionMode"), Converter = new SelectionModeConvert(), Mode = Windows.UI.Xaml.Data.BindingMode.TwoWay }); newListViewBase.SelectionChanged += NativeSelectionChanged; } UpdateNativeSelection(); }
/// <summary> /// Clear the current screen and all properties. /// </summary> /// <since_tizen> 9 </since_tizen> public virtual void Clear() { if (VisibleItems != null) { foreach (RecyclerViewItem item in VisibleItems) { if (ItemsView != null) { ItemsView.UnrealizeItem(item, false); } } VisibleItems.Clear(); } if (CandidateMargin != null) { CandidateMargin.Dispose(); CandidateMargin = null; } if (Container) { if (ItemsView != null) { Container.Size = ItemsView.Size; } Container.Position = new Position(0.0f, 0.0f); Container = null; } ItemsView = null; }
public ItemsViewController(ItemsView itemsView, ItemsViewLayout layout) : base(layout) { ItemsView = itemsView; ItemsSource = CreateItemsViewSource(); UpdateLayout(layout); }
protected override void TearDownOldElement(ItemsView oldElement) { base.TearDownOldElement(oldElement); if (oldElement == null) { return; } oldElement.Scrolled -= CarouselScrolled; if (ListViewBase != null) { ListViewBase.SizeChanged -= InitialSetup; if (CollectionViewSource?.Source is ObservableItemTemplateCollection observableItemsSource) { observableItemsSource.CollectionChanged -= CollectionItemsSourceChanged; } } if (_scrollViewer != null) { _scrollViewer.ViewChanging -= OnScrollViewChanging; _scrollViewer.ViewChanged -= OnScrollViewChanged; } }
internal void UpdateSubview(object view, DataTemplate viewTemplate, nint viewTag, ref UIView uiView, ref VisualElement formsElement) { uiView?.RemoveFromSuperview(); if (formsElement != null) { ItemsView.RemoveLogicalChild(formsElement); formsElement.MeasureInvalidated -= OnFormsElementMeasureInvalidated; } UpdateView(view, viewTemplate, ref uiView, ref formsElement); if (uiView != null) { uiView.Tag = viewTag; CollectionView.AddSubview(uiView); } if (formsElement != null) { ItemsView.AddLogicalChild(formsElement); } if (formsElement != null) { RemeasureLayout(formsElement); formsElement.MeasureInvalidated += OnFormsElementMeasureInvalidated; } else if (uiView != null) { uiView.SizeToFit(); } }
protected void UpdateSubview(object view, DataTemplate viewTemplate, ref UIView uiView, ref VisualElement formsElement) { if (uiView != null) { CollectionView.Subviews.Remove(uiView); } if (formsElement != null) { ItemsView.RemoveLogicalChild(formsElement); formsElement.MeasureInvalidated -= OnFormsElementMeasureInvalidated; } UpdateView(view, viewTemplate, ref uiView, ref formsElement); if (uiView != null) { CollectionView.AddSubview(uiView); } if (formsElement != null) { ItemsView.AddLogicalChild(formsElement); } if (formsElement != null) { RemeasureLayout(formsElement); formsElement.MeasureInvalidated += OnFormsElementMeasureInvalidated; } else if (uiView != null) { uiView.SizeToFit(); } }
protected override void PostResetList() { AddSortDescription( new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.IsOnair), Microsoft.Toolkit.Uwp.UI.SortDirection.Descending) ); AddSortDescription( new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.IsPast), Microsoft.Toolkit.Uwp.UI.SortDirection.Ascending) ); AddSortDescription( new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.IsReserved), Microsoft.Toolkit.Uwp.UI.SortDirection.Ascending) ); AddSortDescription( new Microsoft.Toolkit.Uwp.UI.SortDescription(nameof(LiveInfoListItemViewModel.ExpiredAt), Microsoft.Toolkit.Uwp.UI.SortDirection.Ascending) ); (ItemsView.Source as ObservableCollection <LiveInfoListItemViewModel>).ObserveElementPropertyChanged() .Where(x => x.EventArgs.PropertyName == nameof(x.Sender.Reservation) && x.Sender.Reservation == null) .Subscribe(x => { ItemsView.Remove(x.Sender); }); base.PostResetList(); }
public ItemsViewController(ItemsView itemsView, ItemsViewLayout layout) : base(layout) { _itemsView = itemsView; _itemsSource = ItemsSourceFactory.Create(_itemsView.ItemsSource, CollectionView); UpdateLayout(layout); }
private void MoveToPage(int pageIndex) { CurrentPage = pageIndex; CommandManager.InvalidateRequerySuggested(); ItemsView.Refresh(); }
protected virtual void SetUpNewElement(ItemsView newElement) { if (newElement == null) { return; } if (ListViewBase == null) { ListViewBase = SelectListViewBase(); ListViewBase.IsSynchronizedWithCurrentItem = false; FindScrollViewer(ListViewBase); Layout.PropertyChanged += LayoutPropertyChanged; SetNativeControl(ListViewBase); } UpdateItemTemplate(); UpdateItemsSource(); UpdateVerticalScrollBarVisibility(); UpdateHorizontalScrollBarVisibility(); UpdateEmptyView(); // Listen for ScrollTo requests newElement.ScrollToRequested += ScrollToRequested; }
public void Bind(object itemBindingContext, ItemsView itemsView, Action <Size> reportMeasure = null, Size?size = null) { var template = _template.SelectDataTemplate(itemBindingContext, itemsView); var templateChanging = template != _selectedTemplate; if (templateChanging) { // Clean up any content we're still holding on to _itemContentView.Recycle(); // Create the new content View = (View)template.CreateContent(); // Set the binding context _before_ we create the renderer; that way, the bound data will be // available during OnElementChanged View.BindingContext = itemBindingContext; // Actually create the native renderer _itemContentView.RealizeContent(View); _selectedTemplate = template; } _itemContentView.HandleItemSizingStrategy(reportMeasure, size); if (!templateChanging) { // Same template, new data View.BindingContext = itemBindingContext; } itemsView.AddLogicalChild(View); }
protected virtual void TearDownOldElement(ItemsView oldElement) { if (oldElement == null) { return; } if (Layout != null) { // Stop tracking the old layout Layout.PropertyChanged -= LayoutPropertyChanged; } // Stop listening for ScrollTo requests oldElement.ScrollToRequested -= ScrollToRequested; if (CollectionViewSource != null) { CleanUpCollectionViewSource(); } if (ListViewBase != null) { ListViewBase.ItemsSource = null; } if (_scrollViewer != null) { _scrollViewer.ViewChanged -= OnScrollViewChanged; } }
void SetUpNewElement(ItemsView newElement) { if (newElement == null) { return; } if (ListViewBase == null) { ListViewBase = SelectLayout(newElement.ItemsLayout); _layout = newElement.ItemsLayout; _layout.PropertyChanged += LayoutOnPropertyChanged; SetNativeControl(ListViewBase); } UpdateItemTemplate(); UpdateItemsSource(); UpdateVerticalScrollBarVisibility(); UpdateHorizontalScrollBarVisibility(); // Listen for ScrollTo requests newElement.ScrollToRequested += ScrollToRequested; }
public AppCaptureListView() { Log.Debug("Demo", "App"); InitializeComponent(); ItemsView.SetBinding(RecycleItemsView.ItemHeightProperty, new Binding("ItemHeight", source: this)); ItemsView.SetBinding(RecycleItemsView.ItemWidthProperty, new Binding("ItemWidth", source: this)); }
private void itemViewToolStripMenuItem_Click(object sender, EventArgs e) { Form sForm = ItemsView.Instance(); sForm.MdiParent = this; sForm.Show(); sForm.Activate(); }
internal void RealizeContent(View view, ItemsView itemsView) { Content = CreateHandler(view, itemsView); AddView(Content.NativeView); //TODO: RUI IS THIS THE BEST WAY TO CAST? (View as VisualElement).MeasureInvalidated += ElementMeasureInvalidated; }
public void RefreshIndices() { foreach (var item in Items) { item.Update(tasksModel.Get(item.Id)); } ItemsView.Refresh(); }
public override void Open() { BaseItems = Workspace.ActiveLister.Items.ToList(); Workspace.ActiveLister.GotItems += ActiveListerGotItems; SetHeaderIconByKey("appbar_folder"); ItemsView.MoveCurrentTo(Workspace.ActiveLister.ItemsView.CurrentItem); base.Open(); }
public void Recycle(ItemsView itemsView) { if (_itemView is SizedItemContentView _sizedItemContentView) { _sizedItemContentView.Recycle(); } itemsView.RemoveLogicalChild(View); }
protected override void SetUpNewElement(ItemsView newElement) { base.SetUpNewElement(newElement); if (newElement != null) { ListViewBase.SizeChanged += OnListSizeChanged; } }
public void Bind(ItemsView itemsView, object bindingContext) { var template = itemsView.ItemTemplate; // Run this through the extension method in case it's really a DataTemplateSelector template = template.SelectDataTemplate(bindingContext, itemsView); Bind(template, bindingContext, itemsView); }
public static IReadOnlyList <T> TemplatedItems <T> (this ItemsView <T> itemsView) where T : BindableObject { if (itemsView == null) { throw new ArgumentNullException("itemsView"); } return(itemsView.TemplatedItems); }
public CollectionViewController(ItemsView itemsView, ItemsViewLayout layout) : base(layout) { _itemsView = itemsView; _itemsSource = ItemsSourceFactory.Create(_itemsView.ItemsSource, CollectionView); _layout = layout; _layout.GetPrototype = GetPrototype; _layout.UniformSize = false; // todo hartez Link this to ItemsView.ItemSizingStrategy hint }
public void Bind(DataTemplate template, object bindingContext, ItemsView itemsView) { var oldElement = VisualElementRenderer?.Element; // Run this through the extension method in case it's really a DataTemplateSelector var itemTemplate = template.SelectDataTemplate(bindingContext, itemsView); if (itemTemplate != _currentTemplate) { // Remove the old view, if it exists if (oldElement != null) { oldElement.MeasureInvalidated -= MeasureInvalidated; itemsView.RemoveLogicalChild(oldElement); ClearSubviews(); _size = Size.Zero; } // Create the content and renderer for the view var view = itemTemplate.CreateContent() as View; // Prevents the use of default color when there are VisualStateManager with Selected state setting the background color // First we check whether the cell has the default selected background color; if it does, then we should check // to see if the cell content is the VSM to set a selected color if (SelectedBackgroundView.BackgroundColor == ColorExtensions.Gray && IsUsingVSMForSelectionColor(view)) { SelectedBackgroundView = new UIView { BackgroundColor = UIColor.Clear }; } // Set the binding context _before_ we create the renderer; that way, it's available during OnElementChanged view.BindingContext = bindingContext; var renderer = TemplateHelpers.CreateRenderer(view); SetRenderer(renderer); // And make the new Element a "child" of the ItemsView // We deliberately do this _after_ setting the binding context for the new element; // if we do it before, the element briefly inherits the ItemsView's bindingcontext and we // emit a bunch of needless binding errors itemsView.AddLogicalChild(view); } else { // Same template, different data var currentElement = VisualElementRenderer?.Element; if (currentElement != null) { currentElement.BindingContext = bindingContext; } } _currentTemplate = itemTemplate; }
protected override void SetUpNewElement(ItemsView newElement, bool setUpProperties) { base.SetUpNewElement(newElement, false); if (newElement != null) { ListViewBase.SizeChanged += OnListSizeChanged; } }