... | ... | @@ -73,5 +73,33 @@ XAML 바인딩을 사용하면 아래와 같이 선언하여 의존성을 끊을 |
|
|
mc:Ignorable="d">
|
|
|
</Page>
|
|
|
```
|
|
|
3. INotifyPropertyChanged
|
|
|
4. ICommand |
|
|
\ No newline at end of file |
|
|
##### 3) INotifyPropertyChanged
|
|
|
속성간에 바인딩을 사용하여 연결하면 실제 데이터가 변경되어도 화면에는 반영되지 않는다.
|
|
|
따라서 이를 ViewModel에서 제어하기 위해 INotifyPropertyChanged를 사용하여 속성 값이 변경을 UI에 알리는 부분을 구현한다.
|
|
|
모든 ViewModel이 INotifyPropertyChanged를 구현해야하기 때문에 일반적으로 INotifyPropertyChanged를 구현한 ViewModelBase 클래스를 미리 정의해서 사용한다. (MVVM Light에서도 ViewModelBase 클래스를 제공한다)
|
|
|
|
|
|
```csharp
|
|
|
public class MainViewModel : INotifyPropertyChanged
|
|
|
{
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
|
[NotifyPropertyChangedInvocator]
|
|
|
|
|
|
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
{
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
}
|
|
|
|
|
|
private string _productName;
|
|
|
public string ProductName
|
|
|
{
|
|
|
get { return _productName; }
|
|
|
set
|
|
|
{
|
|
|
_productName = value;
|
|
|
OnPropertyChanged();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
##### 4) ICommand |