回答編集履歴

2

見直しキャンペーン中

2023/07/23 03:56

投稿

TN8001
TN8001

スコア10011

test CHANGED
@@ -1,45 +1,23 @@
1
1
  `SetProperty`は`INotifyPropertyChanged`を少しでも楽に書けるようにするものです。
2
-
3
2
  各人いろいろやっていましたが、今は記事のような作りに収束していると思います。
4
3
 
5
-
6
-
7
4
  `INotifyPropertyChanged`自体については、いろいろ記事があると思います。
8
-
9
5
  `ViewModel`の変更時にイベントを出すことによって、(バインドしていれば自動的にイベント購読している)`View`が表示を更新できるようになる仕組みです。
10
6
 
11
-
12
-
13
7
  元の値と同じ場合意味がないので`PropertyChanged`を発砲しません。
14
-
15
8
  なので`CanExecuteChanged `も出さなくていいでしょう。
16
-
17
-
18
9
 
19
10
  変更した場合trueになるので、↓としてあるほうが無駄イベントが飛ばずいいでしょうね。
20
11
 
21
-
22
-
23
- ```C#
12
+ ```cs
24
-
25
13
  if(this.SetProperty(ref this.input, value))
26
-
27
14
  this.ConvertCommand.RaiseCanExecuteChanged();
28
-
29
15
  ```
30
-
31
-
32
16
 
33
17
  > RaiseCanExecuteChangedとはどのようなメソッドでしょうか。
34
18
 
35
-
36
-
37
19
  [ICommandの実装クラスも用意しないとなんだね - かずきのBlog@hatena](https://blog.okazuki.jp/entry/20120421/1335015512)
38
-
39
20
  の`RaiseCanExecuteChanged()`を見てください。
40
21
 
41
-
42
-
43
22
  `SetProperty`と似ていると思いませんか?
44
-
45
23
  コマンドの実行可否が変わった(可能性がある)時に呼び出すことによって、例えばボタンの押せる押せないを`View`が変更します。

1

追記

2020/08/14 05:55

投稿

TN8001
TN8001

スコア10011

test CHANGED
@@ -1,3 +1,15 @@
1
+ `SetProperty`は`INotifyPropertyChanged`を少しでも楽に書けるようにするものです。
2
+
3
+ 各人いろいろやっていましたが、今は記事のような作りに収束していると思います。
4
+
5
+
6
+
7
+ `INotifyPropertyChanged`自体については、いろいろ記事があると思います。
8
+
9
+ `ViewModel`の変更時にイベントを出すことによって、(バインドしていれば自動的にイベント購読している)`View`が表示を更新できるようになる仕組みです。
10
+
11
+
12
+
1
13
  元の値と同じ場合意味がないので`PropertyChanged`を発砲しません。
2
14
 
3
15
  なので`CanExecuteChanged `も出さなくていいでしょう。
@@ -15,3 +27,19 @@
15
27
  this.ConvertCommand.RaiseCanExecuteChanged();
16
28
 
17
29
  ```
30
+
31
+
32
+
33
+ > RaiseCanExecuteChangedとはどのようなメソッドでしょうか。
34
+
35
+
36
+
37
+ [ICommandの実装クラスも用意しないとなんだね - かずきのBlog@hatena](https://blog.okazuki.jp/entry/20120421/1335015512)
38
+
39
+ の`RaiseCanExecuteChanged()`を見てください。
40
+
41
+
42
+
43
+ `SetProperty`と似ていると思いませんか?
44
+
45
+ コマンドの実行可否が変わった(可能性がある)時に呼び出すことによって、例えばボタンの押せる押せないを`View`が変更します。