回答編集履歴

1

見直しキャンペーン中

2023/07/26 15:01

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,183 +1,94 @@
1
+ [XAML バインド エラー]ウィンドウに、エラー内容が出ているはずです。
1
- [XAML バインド エラー]ウィンドウ(出し方:メニューから デバッグ -> ウィンドウ -> XAML バインド エラー)に、エラー内容が出ているはずです。
2
+ 出し方:メニューから デバッグ -> ウィンドウ -> XAML バインド エラー
2
-
3
+ ```
4
+ 重大度レベル データ コンテキスト バインド パス ターゲット ターゲット型 説明 ファイル 行 プロジェクト
5
+ エラー Item Item TextBlock.Text String 型 Item のオブジェクトに Item プロパティが見つかりません。 \mainwindow.xaml 25 Questions328202
3
6
  ```
4
7
 
5
- 重大度レベル データ コンテキスト バインド パス タゲット ターゲット型 説明 ファイル 行 プロジェクト
6
-
7
- エラー Item Item TextBlock.Text String 型 Item のオブジェクトに Item プロパティが見つかりません。 \mainwindow.xaml 25 Questions328202
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
- ```xaml
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
- ```C#
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
  ```