MainWindowViewModel.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Collections.ObjectModel;
  3. using System.Linq;
  4. using ReactiveUI;
  5. using System.Reactive.Linq;
  6. namespace BindingTest.ViewModels
  7. {
  8. public class MainWindowViewModel : ReactiveObject
  9. {
  10. private string _booleanString = "True";
  11. private double _doubleValue = 5.0;
  12. private string _stringValue = "Simple Binding";
  13. public MainWindowViewModel()
  14. {
  15. Items = new ObservableCollection<TestItem>(
  16. Enumerable.Range(0, 20).Select(x => new TestItem
  17. {
  18. StringValue = "Item " + x,
  19. Detail = "Item " + x + " details",
  20. }));
  21. SelectedItems = new ObservableCollection<TestItem>();
  22. ShuffleItems = ReactiveCommand.Create();
  23. ShuffleItems.Subscribe(_ =>
  24. {
  25. var r = new Random();
  26. Items.Move(r.Next(Items.Count), 1);
  27. });
  28. StringValueCommand = ReactiveCommand.Create();
  29. StringValueCommand.Subscribe(param => StringValue = param.ToString());
  30. }
  31. public ObservableCollection<TestItem> Items { get; }
  32. public ObservableCollection<TestItem> SelectedItems { get; }
  33. public ReactiveCommand<object> ShuffleItems { get; }
  34. public string BooleanString
  35. {
  36. get { return _booleanString; }
  37. set { this.RaiseAndSetIfChanged(ref _booleanString, value); }
  38. }
  39. public double DoubleValue
  40. {
  41. get { return _doubleValue; }
  42. set { this.RaiseAndSetIfChanged(ref _doubleValue, value); }
  43. }
  44. public string StringValue
  45. {
  46. get { return _stringValue; }
  47. set { this.RaiseAndSetIfChanged(ref _stringValue, value); }
  48. }
  49. public ReactiveCommand<object> StringValueCommand { get; }
  50. }
  51. }