回答編集履歴

1

見直しキャンペーン中

2023/07/29 04:45

投稿

TN8001
TN8001

スコア9862

test CHANGED
@@ -1,179 +1,90 @@
1
1
  `sampleViewModel`がコンパイルできません。
2
-
3
2
  省略時に間違えたということは理解していますが、こういうことがあると回答者はほかにも間違いがあるんじゃないかと疑心暗鬼になります。
4
3
 
5
-
6
-
7
4
  余計な情報を伏せたいなら、**実際に**`Sample`ソリューションを作って動作確認したうえでそのままコピペしてください。
8
-
9
5
  回答者も実際に作って確認しています。当事者がそこを手抜きしないでください。
10
-
11
-
12
6
 
13
7
  ---
14
8
 
15
-
16
-
17
9
  > エラーの詳細はXDG0012 XAMLで、ListViewにネストしたGridViewのDataContextが認識されずうまく参照されないというものでデザイナーなどが表示されません。
18
-
19
10
  > できていた物ができなくなりました。
20
11
 
21
-
22
-
23
12
  `UserControl1.xaml`は本当にこの内容なんですか?それで4.8では表示されていた!?
24
-
25
13
  こちらの手元(Visual Studio Community 2019 Version 16.11.2)では、どちらも同じエラーになります(`d`は無視されるのでビルドはできます)
26
14
 
27
-
28
-
29
15
  `GridView`クラスに`DataContext`プロパティはありません。
30
-
31
16
  なので`d:DataContext`が失敗するのは当然に思えます(`d`の詳しい仕組みは知りませんが^^;
32
-
33
17
  [GridView クラス (System.Windows.Controls) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.gridview)
34
-
35
-
36
18
 
37
19
  デザイナの実装が新しくなったそうなので、古いデザイナでは「不正な設定は無視されていた」とかはあるかもしれません(私は確認できませんが)
38
20
 
39
21
 
40
-
41
-
42
-
43
22
  やるんだったら`UserControl1`の`d:DataContext`に`SampleViewModel`を設定するか、`d:SampleData`はどうでしょうか。
44
-
45
23
  [Visual Studio の XAML デザイナーでデザイン時のサンプル データを使用する - Visual Studio (Windows) | Microsoft Docs](https://docs.microsoft.com/ja-jp/visualstudio/xaml-tools/xaml-design-time-sample-data)
46
24
 
47
-
48
-
49
- ```xaml
25
+ ```xml
50
-
51
26
  <UserControl
52
-
53
27
  x:Class="Questions358740.Views.SampleView"
54
-
55
28
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
56
-
57
29
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
58
-
59
30
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
60
-
61
31
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
62
-
63
32
  xmlns:models="clr-namespace:Questions358740.Models"
64
-
65
33
  xmlns:viewmodels="clr-namespace:Questions358740.ViewModels"
66
-
67
34
  d:DataContext="{d:DesignInstance viewmodels:SampleViewModel, IsDesignTimeCreatable=True}"
68
-
69
35
  mc:Ignorable="d">
70
-
71
36
  <StackPanel>
72
-
73
37
  <ListView ItemsSource="{Binding SampleCollection}">
74
-
75
38
  <!--<ListView.Resources>
76
-
77
39
  <GridView x:Key="ImageServerEditView" d:DataContext="{d:DesignInstance {x:Type models:SampleModel}}" />
78
-
79
40
  </ListView.Resources>-->
80
-
81
41
  <ListView.View>
82
-
83
42
  <GridView>
84
-
85
43
  <GridViewColumn DisplayMemberBinding="{Binding ChannelId}" Header="ChannelId" />
86
-
87
44
  </GridView>
88
-
89
45
  </ListView.View>
90
-
91
46
  </ListView>
92
47
 
93
-
94
-
95
48
  <ListView d:ItemsSource="{d:SampleData}" ItemsSource="{Binding SampleCollection}">
96
-
97
49
  <ListView.View>
98
-
99
50
  <GridView>
100
-
101
51
  <GridViewColumn DisplayMemberBinding="{Binding ChannelId}" Header="ChannelId" />
102
-
103
52
  </GridView>
104
-
105
53
  </ListView.View>
106
-
107
54
  </ListView>
108
-
109
55
  </StackPanel>
110
-
111
56
  </UserControl>
112
-
113
57
  ```
114
58
 
59
+ ```cs
60
+ using Prism.Mvvm;
61
+ using Questions358740.Models;
62
+ using System.Collections.ObjectModel;
115
63
 
64
+ namespace Questions358740.ViewModels
65
+ {
66
+ public class SampleViewModel : BindableBase
67
+ {
68
+ public ObservableCollection<SampleModel> SampleCollection { get; } = new()
69
+ {
70
+ new() { ChannelId = 1, },
71
+ new() { ChannelId = 2, },
72
+ };
73
+ }
74
+ }
75
+ ```
116
76
 
117
- ```C#
77
+ ```cs
118
-
119
78
  using Prism.Mvvm;
120
79
 
121
- using Questions358740.Models;
122
-
123
- using System.Collections.ObjectModel;
124
-
125
-
126
-
127
- namespace Questions358740.ViewModels
80
+ namespace Questions358740.Models
128
-
129
81
  {
130
-
131
- public class SampleViewModel : BindableBase
82
+ public class SampleModel : BindableBase
132
-
133
83
  {
134
-
135
- public ObservableCollection<SampleModel> SampleCollection { get; } = new()
84
+ public int ChannelId { get => _channelId; set => SetProperty(ref _channelId, value); }
136
-
137
- {
138
-
139
- new() { ChannelId = 1, },
85
+ private int _channelId;
140
-
141
- new() { ChannelId = 2, },
142
-
143
- };
144
-
145
86
  }
146
-
147
87
  }
148
-
149
88
  ```
150
89
 
151
-
152
-
153
- ```C#
154
-
155
- using Prism.Mvvm;
156
-
157
-
158
-
159
- namespace Questions358740.Models
160
-
161
- {
162
-
163
- public class SampleModel : BindableBase
164
-
165
- {
166
-
167
- public int ChannelId { get => _channelId; set => SetProperty(ref _channelId, value); }
168
-
169
- private int _channelId;
170
-
171
- }
172
-
173
- }
174
-
175
- ```
176
-
177
-
178
-
179
90
  ![Visual Studio デザイナ](3d0ed822ec13ef52b753df5fa5e03a5e.png)