Browse Source

Use SelectionModel in samples.

pull/4533/head
Steven Kirk 6 years ago
parent
commit
4e6ef0a023
  1. 4
      samples/BindingDemo/MainWindow.xaml
  2. 5
      samples/BindingDemo/ViewModels/MainWindowViewModel.cs
  3. 2
      samples/ControlCatalog/Pages/ListBoxPage.xaml
  4. 19
      samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs

4
samples/BindingDemo/MainWindow.xaml

@ -75,11 +75,11 @@
</StackPanel.DataTemplates>
<StackPanel Margin="18" Spacing="4" Width="200">
<TextBlock FontSize="16" Text="Multiple"/>
<ListBox Items="{Binding Items}" SelectionMode="Multiple" SelectedItems="{Binding SelectedItems}"/>
<ListBox Items="{Binding Items}" SelectionMode="Multiple" Selection="{Binding Selection}"/>
</StackPanel>
<StackPanel Margin="18" Spacing="4" Width="200">
<TextBlock FontSize="16" Text="Multiple"/>
<ListBox Items="{Binding Items}" SelectionMode="Multiple" SelectedItems="{Binding SelectedItems}"/>
<ListBox Items="{Binding Items}" SelectionMode="Multiple" Selection="{Binding Selection}"/>
</StackPanel>
<ContentControl Content="{Binding SelectedItems[0]}">
<ContentControl.DataTemplates>

5
samples/BindingDemo/ViewModels/MainWindowViewModel.cs

@ -7,6 +7,7 @@ using System.Threading.Tasks;
using System.Threading;
using ReactiveUI;
using Avalonia.Controls;
using Avalonia.Controls.Selection;
namespace BindingDemo.ViewModels
{
@ -28,7 +29,7 @@ namespace BindingDemo.ViewModels
Detail = "Item " + x + " details",
}));
SelectedItems = new ObservableCollection<TestItem>();
Selection = new SelectionModel<TestItem> { SingleSelect = false };
ShuffleItems = ReactiveCommand.Create(() =>
{
@ -57,7 +58,7 @@ namespace BindingDemo.ViewModels
}
public ObservableCollection<TestItem> Items { get; }
public ObservableCollection<TestItem> SelectedItems { get; }
public SelectionModel<TestItem> Selection { get; }
public ReactiveCommand<Unit, Unit> ShuffleItems { get; }
public string BooleanString

2
samples/ControlCatalog/Pages/ListBoxPage.xaml

@ -11,7 +11,7 @@
Spacing="16">
<StackPanel Orientation="Vertical" Spacing="8">
<ListBox Items="{Binding Items}"
SelectedItems="{Binding SelectedItems}"
Selection="{Binding Selection}"
AutoScrollToSelectedItem="True"
SelectionMode="{Binding SelectionMode}"
Width="250"

19
samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs

@ -3,6 +3,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Reactive;
using Avalonia.Controls;
using Avalonia.Controls.Selection;
using ReactiveUI;
namespace ControlCatalog.ViewModels
@ -15,16 +16,16 @@ namespace ControlCatalog.ViewModels
public ListBoxPageViewModel()
{
Items = new ObservableCollection<string>(Enumerable.Range(1, 10000).Select(i => GenerateItem()));
SelectedItems = new ObservableCollection<string>();
SelectedItems.Add(Items[1]);
Selection = new SelectionModel<string>();
Selection.Select(1);
AddItemCommand = ReactiveCommand.Create(() => Items.Add(GenerateItem()));
RemoveItemCommand = ReactiveCommand.Create(() =>
{
while (SelectedItems.Count > 0)
while (Selection.Count > 0)
{
Items.Remove(SelectedItems.First());
Items.Remove(Selection.SelectedItems.First());
}
});
@ -32,14 +33,17 @@ namespace ControlCatalog.ViewModels
{
var random = new Random();
SelectedItems.Clear();
SelectedItems.Add(Items[random.Next(Items.Count - 1)]);
using (Selection.BatchUpdate())
{
Selection.Clear();
Selection.Select(random.Next(Items.Count - 1));
}
});
}
public ObservableCollection<string> Items { get; }
public ObservableCollection<string> SelectedItems { get; }
public SelectionModel<string> Selection { get; }
public ReactiveCommand<Unit, Unit> AddItemCommand { get; }
@ -52,6 +56,7 @@ namespace ControlCatalog.ViewModels
get => _selectionMode;
set
{
Selection.Clear();
this.RaiseAndSetIfChanged(ref _selectionMode, value);
}
}

Loading…
Cancel
Save