回答編集履歴
1
見直しキャンペーン中
test
CHANGED
@@ -1,165 +1,82 @@
|
|
1
1
|
`ObservableCollection`はアイテムの増減の通知はしますが、個々の中身の変更は関知しません。
|
2
|
-
|
3
2
|
[ObservableCollection<T> クラス (System.Collections.ObjectModel) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.objectmodel.observablecollection-1)
|
4
|
-
|
5
3
|
[INotifyCollectionChanged インターフェイス (System.Collections.Specialized) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.specialized.inotifycollectionchanged)
|
6
|
-
|
7
|
-
|
8
4
|
|
9
5
|
そもそも`ObservableCollection<string>`ですと、ソースへの変更自体されていないですね(よくわかっていませんが^^;
|
10
6
|
|
11
|
-
|
12
|
-
|
13
7
|
個々のアイテムのほうに`INotifyPropertyChanged`を実装します。
|
14
8
|
|
15
|
-
|
16
|
-
|
17
|
-
```x
|
9
|
+
```xml
|
18
|
-
|
19
10
|
<Window
|
20
|
-
|
21
11
|
x:Class="Questions337649.Views.MainWindow"
|
22
|
-
|
23
12
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
24
|
-
|
25
13
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
26
|
-
|
27
14
|
Width="800"
|
28
|
-
|
29
15
|
Height="450">
|
30
|
-
|
31
16
|
<Grid>
|
32
|
-
|
33
17
|
<Grid.ColumnDefinitions>
|
34
|
-
|
35
18
|
<ColumnDefinition />
|
36
|
-
|
37
19
|
<ColumnDefinition />
|
38
|
-
|
39
20
|
</Grid.ColumnDefinitions>
|
40
|
-
|
41
21
|
<ListView HorizontalContentAlignment="Stretch" ItemsSource="{Binding Items}">
|
42
|
-
|
43
22
|
<ListView.ItemTemplate>
|
44
|
-
|
45
23
|
<DataTemplate>
|
46
|
-
|
47
24
|
<TextBox Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}" />
|
48
|
-
|
49
25
|
</DataTemplate>
|
50
|
-
|
51
26
|
</ListView.ItemTemplate>
|
52
|
-
|
53
27
|
</ListView>
|
54
28
|
|
55
|
-
|
56
|
-
|
57
29
|
<ListView Grid.Column="1" ItemsSource="{Binding Items}">
|
58
|
-
|
59
30
|
<ListView.ItemTemplate>
|
60
|
-
|
61
31
|
<DataTemplate>
|
62
|
-
|
63
32
|
<TextBlock Text="{Binding Text}" />
|
64
|
-
|
65
33
|
</DataTemplate>
|
66
|
-
|
67
34
|
</ListView.ItemTemplate>
|
68
|
-
|
69
35
|
</ListView>
|
70
|
-
|
71
36
|
</Grid>
|
72
|
-
|
73
37
|
</Window>
|
74
|
-
|
75
38
|
```
|
76
39
|
|
77
|
-
|
78
|
-
|
79
|
-
```
|
40
|
+
```cs
|
80
|
-
|
81
41
|
using Prism.Mvvm;
|
82
|
-
|
83
42
|
using System.Collections.ObjectModel;
|
84
43
|
|
85
|
-
|
86
|
-
|
87
44
|
namespace Questions337649.ViewModels
|
88
|
-
|
89
45
|
{
|
90
|
-
|
91
46
|
public class MainWindowViewModel : BindableBase
|
92
|
-
|
93
47
|
{
|
94
|
-
|
95
48
|
public ObservableCollection<Item> Items { get; }
|
96
49
|
|
97
|
-
|
98
|
-
|
99
50
|
// アイテムの増減がないのであれば、配列でいいです。
|
100
|
-
|
101
51
|
//public Item[] Items { get; }
|
102
52
|
|
103
|
-
|
104
|
-
|
105
53
|
public MainWindowViewModel()
|
106
|
-
|
107
54
|
{
|
108
|
-
|
109
55
|
Items = new ObservableCollection<Item>
|
110
|
-
|
111
56
|
{
|
112
|
-
|
113
57
|
new Item { Text = "Item1" },
|
114
|
-
|
115
58
|
new Item { Text = "Item2" },
|
116
|
-
|
117
59
|
new Item { Text = "Item3" },
|
118
|
-
|
119
60
|
};
|
120
61
|
|
121
|
-
|
122
|
-
|
123
62
|
//Items = new Item[]
|
124
|
-
|
125
63
|
//{
|
126
|
-
|
127
64
|
// new Item { Text = "Item1" },
|
128
|
-
|
129
65
|
// new Item { Text = "Item2" },
|
130
|
-
|
131
66
|
// new Item { Text = "Item3" },
|
132
|
-
|
133
67
|
//};
|
134
|
-
|
135
68
|
}
|
136
|
-
|
137
69
|
}
|
138
70
|
|
139
|
-
|
140
|
-
|
141
71
|
public class Item : BindableBase
|
142
|
-
|
143
72
|
{
|
144
|
-
|
145
73
|
private string _Text;
|
146
|
-
|
147
74
|
public string Text { get => _Text; set => SetProperty(ref _Text, value); }
|
148
|
-
|
149
75
|
}
|
150
|
-
|
151
76
|
}
|
152
|
-
|
153
77
|
```
|
154
|
-
|
155
|
-
|
156
78
|
|
157
79
|
---
|
158
80
|
|
159
|
-
|
160
|
-
|
161
81
|
回答コードを書いているときに、↓にはまってしまい頭を抱えました^^;(`string Text { get; set; }`で動いてしまった)
|
162
|
-
|
163
|
-
|
164
|
-
|
165
82
|
[wpf - Why does the binding update without implementing INotifyPropertyChanged? - Stack Overflow](https://stackoverflow.com/questions/7767218/why-does-the-binding-update-without-implementing-inotifypropertychanged)
|