diff --git a/samples/VirtualizationTest/MainWindow.xaml b/samples/VirtualizationTest/MainWindow.xaml index a6fd6918ef..988bd8bef5 100644 --- a/samples/VirtualizationTest/MainWindow.xaml +++ b/samples/VirtualizationTest/MainWindow.xaml @@ -21,10 +21,11 @@ UseFloatingWatermark="True" Text="{Binding NewItemString}"/> + - + diff --git a/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs b/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs index 9b0565401a..239eab2451 100644 --- a/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs +++ b/samples/VirtualizationTest/ViewModels/MainWindowViewModel.cs @@ -10,7 +10,9 @@ namespace VirtualizationTest.ViewModels internal class MainWindowViewModel : ReactiveObject { private int _itemCount = 200; + private string _newItemString; private IReactiveList _items; + private ItemViewModel _selectedItem; private string _prefix = "Item"; public MainWindowViewModel() @@ -18,6 +20,18 @@ namespace VirtualizationTest.ViewModels this.WhenAnyValue(x => x.ItemCount).Subscribe(ResizeItems); RecreateCommand = ReactiveCommand.Create(); RecreateCommand.Subscribe(_ => Recreate()); + + NewItemCommand = ReactiveCommand.Create(); + NewItemCommand.Subscribe(_ => Create()); + + RemoveItemCommand = ReactiveCommand.Create(); + RemoveItemCommand.Subscribe(_ => Remove()); + } + + public string NewItemString + { + get { return _newItemString; } + set { this.RaiseAndSetIfChanged(ref _newItemString, value); } } public int ItemCount @@ -26,14 +40,24 @@ namespace VirtualizationTest.ViewModels set { this.RaiseAndSetIfChanged(ref _itemCount, value); } } + public ItemViewModel SelectedItem + { + get { return _selectedItem; } + set { this.RaiseAndSetIfChanged(ref _selectedItem, value); } + } + public IReactiveList Items { get { return _items; } private set { this.RaiseAndSetIfChanged(ref _items, value); } } + public ReactiveCommand NewItemCommand { get; private set; } + public ReactiveCommand RecreateCommand { get; private set; } + public ReactiveCommand RemoveItemCommand { get; private set; } + private void ResizeItems(int count) { if (Items == null) @@ -54,6 +78,19 @@ namespace VirtualizationTest.ViewModels } } + private void Create() + { + Items.Add(new ItemViewModel(Items.Count, NewItemString)); + } + + private void Remove() + { + if (SelectedItem != null) + { + Items.Remove(SelectedItem); + } + } + private void Recreate() { _prefix = _prefix == "Item" ? "Recreated" : "Item";