Skip to content

原文の訂正箇所と、誤訳箇所などを修正 #31

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions hands-on/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public string Avatar { get; set; }
## 手順 4 : View Model を いじる

Xamarin.Forms の view で、どのようにデータを表示するかのすべての機能を、`SpeakersViewModel.cs` が提供します。
`SpeakersViewModel` は、 Speaker の List と、サーバからスピーカーのデータを取ってくるために呼ばれるメソッド、から構成されています。また、バックグラウンドタスクとしてデータを取って来ようとしていることを示す boolean フラグも持っています。
`SpeakersViewModel` は、 Speaker の List と、サーバからスピーカーのデータを取ってくるために呼ばれるメソッドから構成されています。また、バックグラウンドタスクとしてデータを取って来ようとしていることを示す boolean フラグも持っています。

### INotifyPropertyChanged をインプリメントしよう

Expand Down Expand Up @@ -150,7 +150,7 @@ void OnPropertyChanged([CallerMemberName] string name = null)
bool busy;
```

そして、自動プロパティを作ります
そして、プロパティを作ります

```csharp
public bool IsBusy
Expand Down Expand Up @@ -327,22 +327,23 @@ ObservableCollection<Speaker> Speakers {get;set;} を作成した場所で、**G
public Command GetSpeakersCommand { get; set; }
```

**SpeakersViewModel()** のコンストラクターの中で GetSpeakersCommand を作成し、使用するメソッドを割り当てます。更に IsBusy プロパティに影響を与える enabled フラグも渡します:
**SpeakersViewModel()** のコンストラクターの中で2つのメソッドを渡して GetSpeakersCommand を作成します。1つ目はコマンドが実行された時に呼び出されるメソッド、2つ目はコマンドが実行可能かどうかを定めるメソッドです。
どちらのメソッドも下記のようにラムダ式を使って記述することもできます。

```csharp
GetSpeakersCommand = new Command(
async () => await GetSpeakers(),
() => !IsBusy);
```

この後修正するのは、私たちが作成した enabled 関数を再評価する IsBusy プロパティをいつセットするか?です。**IsBusy** の **set** でシンプルに **ChangeCanExecute** メソッドを次のように実行します:
続いて、IsBusy プロパティが変化した際、実行可能かどうかを定める関数( `() => !IsBusy` )を再評価したいので、IsBusy プロパティをセットする箇所を修正します。**IsBusy** の **set** でシンプルに **ChangeCanExecute** メソッドを次のように実行します:

```csharp
set
{
busy = value;
OnPropertyChanged();
//Update the can execute
// コマンドが実行可能かどうかを再評価する
GetSpeakersCommand.ChangeCanExecute();
}
```
Expand Down Expand Up @@ -887,4 +888,4 @@ await Navigation.PushAsync(new DetailsPage(speaker, vm));

![Modified](image/save01.png)

できあがり!
できあがり!