質問編集履歴

3

ViewModel側のコードを追記

2020/02/14 05:37

投稿

Coriander
Coriander

スコア12

test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,197 @@
61
61
 
62
62
 
63
63
  ```
64
+
65
+
66
+
67
+
68
+
69
+ ViewModel
70
+
71
+ ```ここに言語を入力
72
+
73
+
74
+
75
+ using System;
76
+
77
+ using System.Collections.Generic;
78
+
79
+ using System.Linq;
80
+
81
+ using System.Text;
82
+
83
+ using System.ComponentModel;
84
+
85
+
86
+
87
+ using Livet;
88
+
89
+ using Livet.Commands;
90
+
91
+ using Livet.Messaging;
92
+
93
+ using Livet.Messaging.IO;
94
+
95
+ using Livet.EventListeners;
96
+
97
+ using Livet.Messaging.Windows;
98
+
99
+ using System.Collections.ObjectModel;
100
+
101
+
102
+
103
+ namespace InspectDataGrid.ViewModels
104
+
105
+ {
106
+
107
+ public class MainWindowViewModel : ViewModel
108
+
109
+ {
110
+
111
+
112
+
113
+ private ObservableCollection<Item> items;
114
+
115
+ public ObservableCollection<Item> Items
116
+
117
+ {
118
+
119
+ get { return items; }
120
+
121
+ set
122
+
123
+ {
124
+
125
+ items = value;
126
+
127
+ RaisePropertyChanged();
128
+
129
+ }
130
+
131
+ }
132
+
133
+
134
+
135
+ private bool isEdit;
136
+
137
+ public bool IsEdit
138
+
139
+ {
140
+
141
+ get { return isEdit; }
142
+
143
+ set
144
+
145
+ {
146
+
147
+ isEdit = value;
148
+
149
+ RaisePropertyChanged();
150
+
151
+ }
152
+
153
+ }
154
+
155
+
156
+
157
+ private ViewModelCommand settruecommand;
158
+
159
+ public ViewModelCommand SetTrueCommand
160
+
161
+ {
162
+
163
+ get
164
+
165
+ {
166
+
167
+ if (settruecommand ==null)
168
+
169
+ {
170
+
171
+ settruecommand = new ViewModelCommand(this.SetTrue);
172
+
173
+ }
174
+
175
+ return settruecommand;
176
+
177
+ }
178
+
179
+ }
180
+
181
+
182
+
183
+ private ViewModelCommand setfalsecommand;
184
+
185
+ public ViewModelCommand SetFalseCommand
186
+
187
+ {
188
+
189
+ get
190
+
191
+ {
192
+
193
+ if (setfalsecommand ==null)
194
+
195
+ {
196
+
197
+ setfalsecommand = new ViewModelCommand(this.SetFalse);
198
+
199
+ }
200
+
201
+ return setfalsecommand;
202
+
203
+ }
204
+
205
+ }
206
+
207
+
208
+
209
+
210
+
211
+ public MainWindowViewModel()
212
+
213
+ {
214
+
215
+ this.Items = new ObservableCollection<Item>();
216
+
217
+ this.Items.Add(new Item("a", 24));
218
+
219
+ this.Items.Add(new Item("b", 25));
220
+
221
+
222
+
223
+ }
224
+
225
+ public void Initialize()
226
+
227
+ {
228
+
229
+ }
230
+
231
+
232
+
233
+ public void SetTrue()
234
+
235
+ {
236
+
237
+ this.IsEdit = true;
238
+
239
+ }
240
+
241
+
242
+
243
+ public void SetFalse()
244
+
245
+ {
246
+
247
+ this.IsEdit = false;
248
+
249
+ }
250
+
251
+ }
252
+
253
+
254
+
255
+
256
+
257
+ ```

2

質問文追記

2020/02/14 05:37

投稿

Coriander
Coriander

スコア12

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,13 @@
4
4
 
5
5
 
6
6
 
7
+ 一方、ItemSourceとしてバインドしているItemsコレクションのAgeプロパティをDataTriggerとしてBindingに指定しValueへ任意の数値を指定し、DataGrid上でその数値を入力するとStyleは正しく適用されます。
8
+
9
+
10
+
11
+
12
+
7
- bool型プロパティで指定した場合、何が不足のでしょうか?
13
+ bool型プロパティで指定した場合、なぜTriggerは動作いのでしょうか?
8
14
 
9
15
 
10
16
 

1

質問文修正

2020/02/14 04:32

投稿

Coriander
Coriander

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,10 @@
1
1
  初歩的な質問になりますが、DataGridTextColumnのCellStyleに対してViewModelのプロパティでDataTriggerを仕掛けても期待通りの動作となりませんでした。
2
2
 
3
- 詳細としては、以下の通りシンプルなViewにbool型のIsEditプロパティを指定し、ViewModel側でTrue/Falseを切り替えてもBorderBrushに変化がありませんでした。IsEditをDataGrid以外のほ
3
+ 詳細としては、以下の通りシンプルなViewにbool型のIsEditプロパティを指定し、ViewModel側でTrue/Falseを切り替えてもBorderBrushに変化がありませんでした。IsEditをDataGrid以外のほかの要素に同様にStyle Triggerを指定すると正しく動作するのでbindは問題なさそうです。
4
+
5
+
6
+
7
+ bool型プロパティで指定した場合、何が不足しているのでしょうか?
4
8
 
5
9
 
6
10