1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using System;
- using System.Collections.ObjectModel;
- using System.Linq;
- using Avalonia;
- using Avalonia.Controls;
- using Avalonia.Controls.Selection;
- using MiniMvvm;
- namespace VirtualizationDemo.ViewModels;
- public class PlaygroundPageViewModel : ViewModelBase
- {
- private SelectionMode _selectionMode = SelectionMode.Multiple;
- private int _scrollToIndex = 500;
- private string? _newItemHeader = "New Item 1";
- public PlaygroundPageViewModel()
- {
- Items = new(Enumerable.Range(0, 1000).Select(x => new PlaygroundItemViewModel(x)));
- Selection = new();
- }
- public ObservableCollection<PlaygroundItemViewModel> Items { get; }
- public bool Multiple
- {
- get => _selectionMode.HasAnyFlag(SelectionMode.Multiple);
- set => SetSelectionMode(SelectionMode.Multiple, value);
- }
- public bool Toggle
- {
- get => _selectionMode.HasAnyFlag(SelectionMode.Toggle);
- set => SetSelectionMode(SelectionMode.Toggle, value);
- }
- public bool AlwaysSelected
- {
- get => _selectionMode.HasAnyFlag(SelectionMode.AlwaysSelected);
- set => SetSelectionMode(SelectionMode.AlwaysSelected, value);
- }
- public SelectionModel<PlaygroundItemViewModel> Selection { get; }
-
- public SelectionMode SelectionMode
- {
- get => _selectionMode;
- set => RaiseAndSetIfChanged(ref _selectionMode, value);
- }
- public int ScrollToIndex
- {
- get => _scrollToIndex;
- set => RaiseAndSetIfChanged(ref _scrollToIndex, value);
- }
- public string? NewItemHeader
- {
- get => _newItemHeader;
- set => RaiseAndSetIfChanged(ref _newItemHeader, value);
- }
- public void ExecuteScrollToIndex()
- {
- Selection.Select(ScrollToIndex);
- }
- public void RandomizeScrollToIndex()
- {
- var rnd = new Random();
- ScrollToIndex = rnd.Next(Items.Count);
- }
- public void AddAtSelectedIndex()
- {
- if (Selection.SelectedIndex == -1)
- return;
- Items.Insert(Selection.SelectedIndex, new(NewItemHeader));
- }
- public void DeleteSelectedItem()
- {
- var count = Selection.Count;
- for (var i = count - 1; i >= 0; i--)
- Items.RemoveAt(Selection.SelectedIndexes[i]);
- }
- private void SetSelectionMode(SelectionMode mode, bool value)
- {
- if (value)
- SelectionMode |= mode;
- else
- SelectionMode &= ~mode;
- }
- }
|