1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using MaterialDesignColors.WpfExample.Domain;
namespace MaterialDesignDemo.Domain
{
public class ListsAndGridsViewModel : INotifyPropertyChanged
{
private readonly ObservableCollection<SelectableViewModel> _items1;
private readonly ObservableCollection<SelectableViewModel> _items2;
private readonly ObservableCollection<SelectableViewModel> _items3;
private bool? _isAllItems3Selected;
public ListsAndGridsViewModel()
{
_items1 = CreateData();
_items2 = CreateData();
_items3 = CreateData();
}
public bool? IsAllItems3Selected
{
get { return _isAllItems3Selected; }
set
{
if (_isAllItems3Selected == value) return;
_isAllItems3Selected = value;
if (_isAllItems3Selected.HasValue)
SelectAll(_isAllItems3Selected.Value, Items3);
OnPropertyChanged();
}
}
private static void SelectAll(bool select, IEnumerable<SelectableViewModel> models)
{
foreach (var model in models)
{
model.IsSelected = select;
}
}
private static ObservableCollection<SelectableViewModel> CreateData()
{
return new ObservableCollection<SelectableViewModel>
{
new SelectableViewModel
{
Code = 'M',
Name = "Material Design",
Description = "Material Design in XAML Toolkit"
},
new SelectableViewModel
{
Code = 'D',
Name = "Dragablz",
Description = "Dragablz Tab Control",
Food = "Fries"
},
new SelectableViewModel
{
Code = 'P',
Name = "Predator",
Description = "If it bleeds, we can kill it"
}
};
}
public ObservableCollection<SelectableViewModel> Items1 => _items1;
public ObservableCollection<SelectableViewModel> Items2 => _items2;
public ObservableCollection<SelectableViewModel> Items3 => _items3;
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public IEnumerable<string> Foods
{
get
{
yield return "Burger";
yield return "Fries";
yield return "Shake";
yield return "Lettuce";
}
}
}
}
|