diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml
index efc90357ed..790813fda0 100644
--- a/samples/ControlCatalog/MainView.xaml
+++ b/samples/ControlCatalog/MainView.xaml
@@ -45,7 +45,10 @@
-
+
+
+
diff --git a/samples/ControlCatalog/Pages/ListBoxPage.xaml b/samples/ControlCatalog/Pages/ListBoxPage.xaml
index edf3d41bf5..3521ad71a9 100644
--- a/samples/ControlCatalog/Pages/ListBoxPage.xaml
+++ b/samples/ControlCatalog/Pages/ListBoxPage.xaml
@@ -1,35 +1,25 @@
-
- ListBox
- Hosts a collection of ListBoxItem.
-
-
-
-
-
-
-
-
-
-
-
-
- Single
- Multiple
- Toggle
- AlwaysSelected
-
-
+
+
+ ListBox
+ Hosts a collection of ListBoxItem.
-
+
+ Multiple
+ Toggle
+ AlwaysSelected
+ AutoScrollToSelectedItem
+
+
+
+
+
+
+
+
diff --git a/samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs b/samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs
index d088576998..a963e8b6eb 100644
--- a/samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs
+++ b/samples/ControlCatalog/ViewModels/ListBoxPageViewModel.cs
@@ -10,15 +10,30 @@ namespace ControlCatalog.ViewModels
{
public class ListBoxPageViewModel : ReactiveObject
{
+ private bool _multiple;
+ private bool _toggle;
+ private bool _alwaysSelected;
+ private bool _autoScrollToSelectedItem = true;
private int _counter;
- private SelectionMode _selectionMode;
+ private ObservableAsPropertyHelper _selectionMode;
public ListBoxPageViewModel()
{
Items = new ObservableCollection(Enumerable.Range(1, 10000).Select(i => GenerateItem()));
+
Selection = new SelectionModel();
Selection.Select(1);
+ _selectionMode = this.WhenAnyValue(
+ x => x.Multiple,
+ x => x.Toggle,
+ x => x.AlwaysSelected,
+ (m, t, a) =>
+ (m ? SelectionMode.Multiple : 0) |
+ (t ? SelectionMode.Toggle : 0) |
+ (a ? SelectionMode.AlwaysSelected : 0))
+ .ToProperty(this, x => x.SelectionMode);
+
AddItemCommand = ReactiveCommand.Create(() => Items.Add(GenerateItem()));
RemoveItemCommand = ReactiveCommand.Create(() =>
@@ -42,25 +57,37 @@ namespace ControlCatalog.ViewModels
}
public ObservableCollection Items { get; }
-
public SelectionModel Selection { get; }
+ public SelectionMode SelectionMode => _selectionMode.Value;
- public ReactiveCommand AddItemCommand { get; }
+ public bool Multiple
+ {
+ get => _multiple;
+ set => this.RaiseAndSetIfChanged(ref _multiple, value);
+ }
- public ReactiveCommand RemoveItemCommand { get; }
+ public bool Toggle
+ {
+ get => _toggle;
+ set => this.RaiseAndSetIfChanged(ref _toggle, value);
+ }
- public ReactiveCommand SelectRandomItemCommand { get; }
+ public bool AlwaysSelected
+ {
+ get => _alwaysSelected;
+ set => this.RaiseAndSetIfChanged(ref _alwaysSelected, value);
+ }
- public SelectionMode SelectionMode
+ public bool AutoScrollToSelectedItem
{
- get => _selectionMode;
- set
- {
- Selection.Clear();
- this.RaiseAndSetIfChanged(ref _selectionMode, value);
- }
+ get => _autoScrollToSelectedItem;
+ set => this.RaiseAndSetIfChanged(ref _autoScrollToSelectedItem, value);
}
+ public ReactiveCommand AddItemCommand { get; }
+ public ReactiveCommand RemoveItemCommand { get; }
+ public ReactiveCommand SelectRandomItemCommand { get; }
+
private string GenerateItem() => $"Item {_counter++.ToString()}";
}
}