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.DataTemplates>
<StackPanel Margin="18" Spacing="4" Width="200"> <StackPanel Margin="18" Spacing="4" Width="200">
<TextBlock FontSize="16" Text="Multiple"/> <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>
<StackPanel Margin="18" Spacing="4" Width="200"> <StackPanel Margin="18" Spacing="4" Width="200">
<TextBlock FontSize="16" Text="Multiple"/> <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>
<ContentControl Content="{Binding SelectedItems[0]}"> <ContentControl Content="{Binding SelectedItems[0]}">
<ContentControl.DataTemplates> <ContentControl.DataTemplates>

5
samples/BindingDemo/ViewModels/MainWindowViewModel.cs

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

2
samples/ControlCatalog/Pages/ListBoxPage.xaml

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

19
samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs

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

Loading…
Cancel
Save