fork(1) download
  1. using System;
  2. using System.Collections.ObjectModel;
  3.  
  4. public sealed class Foo
  5. {
  6. private readonly ObservableCollection<ObservableCollection<string>> _data;
  7.  
  8. public Foo()
  9. {
  10. _data = new ObservableCollection<ObservableCollection<string>>();
  11. for (var i = 0; i<10; i++)
  12. {
  13. var t = new ObservableCollection<string>();
  14. for (var j = 0; j<10; j++)
  15. {
  16. t.Add(i + "+" + j);
  17. }
  18. _data.Add(t);
  19. }
  20.  
  21. var tmp = new ObservableCollection<ReadOnlyObservableCollection<string>>();
  22. foreach (var row in _data)
  23. {
  24. tmp.Add(new ReadOnlyObservableCollection<string>(row));
  25. }
  26. Data = new ReadOnlyObservableCollection<ReadOnlyObservableCollection<string>>(tmp);
  27.  
  28. Console.WriteLine("Initial row count:");
  29. Console.WriteLine("_data: " + _data.Count);
  30. Console.WriteLine("Data: " + Data.Count);
  31.  
  32. Console.WriteLine("Removing item with index (0,0)");
  33. RemoveItem(0,0);
  34.  
  35. Console.WriteLine("Curent item count for 0th row:");
  36. Console.WriteLine("_data: " + _data[0].Count);
  37. Console.WriteLine("Data: " + Data[0].Count);
  38.  
  39. Console.WriteLine("Removing the 0th row");
  40. RemoveRow(0);
  41.  
  42. Console.WriteLine("Current row count:");
  43. Console.WriteLine("_data: " + _data.Count);
  44. Console.WriteLine("Data: " + Data.Count);
  45. }
  46.  
  47. public ReadOnlyObservableCollection<ReadOnlyObservableCollection<string>> Data { get; }
  48.  
  49. public void RemoveItem(int x, int y)
  50. {
  51. _data[x].RemoveAt(y); // This does update the UI.
  52. }
  53.  
  54. public void RemoveRow(int x)
  55. {
  56. _data.RemoveAt(x); // This does not update the UI.
  57. }
  58. }
  59.  
  60. public class Test
  61. {
  62. public static void Main()
  63. {
  64. var f = new Foo();
  65. }
  66. }
Success #stdin #stdout 0s 29936KB
stdin
Standard input is empty
stdout
Initial row count:
_data: 10
Data: 10
Removing item with index (0,0)
Curent item count for 0th row:
_data: 9
Data: 9
Removing the 0th row
Current row count:
_data: 9
Data: 10