回答編集履歴
1
見直しキャンペーン中
test
CHANGED
@@ -1,183 +1,94 @@
|
|
1
|
+
[XAML バインド エラー]ウィンドウに、エラー内容が出ているはずです。
|
1
|
-
|
2
|
+
出し方:メニューから デバッグ -> ウィンドウ -> XAML バインド エラー
|
2
|
-
|
3
|
+
```
|
4
|
+
重大度レベル データ コンテキスト バインド パス ターゲット ターゲット型 説明 ファイル 行 プロジェクト
|
5
|
+
エラー Item Item TextBlock.Text String 型 Item のオブジェクトに Item プロパティが見つかりません。 \mainwindow.xaml 25 Questions328202
|
3
6
|
```
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
[XAML バインド エラー]ウィンドウがない場合は、[出力]ウィンドウでもいいです(単に見やすくなっているだけなので)
|
9
|
+
出し方:メニューから 表示 -> 出力
|
10
|
+
```
|
11
|
+
System.Windows.Data Error: 40 : BindingExpression path error: 'Item' property not found on 'object' ''Item' (HashCode=48832851)'. BindingExpression:Path=Item.Date; DataItem='Item' (HashCode=48832851); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
|
9
12
|
```
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
[XAML バインド エラー]ウィンドウがない場合は、[出力]ウィンドウ(出し方:メニューから 表示 -> 出力)でもいいです(単に見やすくなっているだけなので)
|
14
|
-
|
15
|
-
```
|
16
|
-
|
17
|
-
System.Windows.Data Error: 40 : BindingExpression path error: 'Item' property not found on 'object' ''Item' (HashCode=48832851)'. BindingExpression:Path=Item.Date; DataItem='Item' (HashCode=48832851); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
|
18
|
-
|
19
|
-
```
|
20
|
-
|
21
|
-
|
22
|
-
|
23
14
|
ざっくり言うと「`Item`型に`Item`プロパティがないので、`TextBlock.Text`にバインドできません」です。
|
24
|
-
|
25
15
|
つまりこの段階ではデータコンテキストは、すでに個々のアイテム(`Item`)になっています。
|
26
|
-
|
27
|
-
|
28
16
|
|
29
17
|
よって`<TextBlock Text="{Binding Date,`としてください。
|
30
18
|
|
31
|
-
|
32
|
-
|
33
19
|
---
|
34
20
|
|
35
|
-
|
36
|
-
|
37
21
|
よく勘違いされますが、`INotioyPropertyChanged`がないとバインドされないわけではありません。
|
38
|
-
|
39
22
|
`ViewModel`の変更が`View`に反映されなくなるだけです。なので変更しないものについては`PropertyChanged`を発砲する必要はありません。
|
40
23
|
|
41
|
-
|
42
|
-
|
43
24
|
しかし↓の問題があるため、実装するようにしたほうがいいのは確かです(回答コードは寿命が同じなのはわかりきっているため、実装していません)
|
44
|
-
|
45
25
|
[【WPF】ViewModelがINotifyPropertyChangedを実装していないとメモリリークする件 | aridai.NET](https://aridai.net/articles/15.html)
|
46
26
|
|
47
|
-
|
48
|
-
|
49
|
-
```x
|
27
|
+
```xml
|
50
|
-
|
51
28
|
<Window
|
52
|
-
|
53
29
|
x:Class="Questions328202.MainWindow"
|
54
|
-
|
55
30
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
56
|
-
|
57
31
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
58
|
-
|
59
32
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
60
|
-
|
61
33
|
xmlns:local="clr-namespace:Questions328202"
|
62
|
-
|
63
34
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
64
|
-
|
65
35
|
Width="800"
|
66
|
-
|
67
36
|
Height="450"
|
68
|
-
|
69
37
|
d:DataContext="{d:DesignInstance Type=local:MainWindowViewModel}"
|
70
|
-
|
71
38
|
mc:Ignorable="d">
|
72
|
-
|
73
39
|
<Window.DataContext>
|
74
|
-
|
75
40
|
<local:MainWindowViewModel />
|
76
|
-
|
77
41
|
</Window.DataContext>
|
78
|
-
|
79
42
|
<Grid>
|
80
|
-
|
81
43
|
<ListView ItemsSource="{Binding DATEList}">
|
82
|
-
|
83
44
|
<ListView.View>
|
84
|
-
|
85
45
|
<GridView>
|
86
|
-
|
87
46
|
<GridViewColumn Header="CellTemplate">
|
88
|
-
|
89
47
|
<GridViewColumn.CellTemplate>
|
90
|
-
|
91
48
|
<DataTemplate>
|
92
|
-
|
93
49
|
<TextBlock FontSize="16" Text="{Binding Date, ConverterCulture=en-US}" />
|
94
|
-
|
95
50
|
</DataTemplate>
|
96
|
-
|
97
51
|
</GridViewColumn.CellTemplate>
|
98
|
-
|
99
52
|
</GridViewColumn>
|
100
53
|
|
101
|
-
|
102
|
-
|
103
54
|
<GridViewColumn DisplayMemberBinding="{Binding Date}" Header="DisplayMemberBinding" />
|
104
|
-
|
105
55
|
</GridView>
|
106
|
-
|
107
56
|
</ListView.View>
|
108
|
-
|
109
57
|
</ListView>
|
110
|
-
|
111
58
|
</Grid>
|
112
|
-
|
113
59
|
</Window>
|
114
|
-
|
115
60
|
```
|
116
61
|
|
117
|
-
|
118
|
-
|
119
|
-
```
|
62
|
+
```cs
|
120
|
-
|
121
63
|
using System;
|
122
|
-
|
123
64
|
using System.Collections.ObjectModel;
|
124
|
-
|
125
65
|
using System.Windows;
|
126
66
|
|
127
|
-
|
128
|
-
|
129
67
|
namespace Questions328202
|
130
|
-
|
131
68
|
{
|
132
|
-
|
133
69
|
public class MainWindowViewModel
|
134
|
-
|
135
70
|
{
|
136
|
-
|
137
71
|
public ObservableCollection<Item> DATEList { get; }
|
138
72
|
|
139
|
-
|
140
|
-
|
141
73
|
public MainWindowViewModel()
|
142
|
-
|
143
74
|
{
|
144
|
-
|
145
75
|
DATEList = new ObservableCollection<Item>()
|
146
|
-
|
147
76
|
{
|
148
|
-
|
149
77
|
new Item { Date = DateTime.Parse("2021/03/14"), },
|
150
|
-
|
151
78
|
new Item { Date = DateTime.Parse("2021/03/15"), },
|
152
|
-
|
153
79
|
new Item { Date = DateTime.Parse("2021/03/16"), },
|
154
|
-
|
155
80
|
};
|
156
|
-
|
157
81
|
}
|
158
|
-
|
159
82
|
}
|
160
83
|
|
161
|
-
|
162
|
-
|
163
84
|
public class Item
|
164
|
-
|
165
85
|
{
|
166
|
-
|
167
86
|
public DateTime Date { get; set; }
|
168
|
-
|
169
87
|
}
|
170
88
|
|
171
|
-
|
172
|
-
|
173
89
|
public partial class MainWindow : Window
|
174
|
-
|
175
90
|
{
|
176
|
-
|
177
91
|
public MainWindow() => InitializeComponent();
|
178
|
-
|
179
92
|
}
|
180
|
-
|
181
93
|
}
|
182
|
-
|
183
94
|
```
|