... | ... | @@ -43,20 +43,32 @@ ViewModel을 쉽게 교체하고 실제 사용되는 데이터를 가짜로 만 |
|
|
### XAML을 이용한 MVVM 패턴의 구현
|
|
|
|
|
|
- 바인딩
|
|
|
- XAML 컨트롤 또는 코드에 선언된 컨트롤 속성간에 통신 채널을 생성한다.
|
|
|
-
|
|
|
```csharp
|
|
|
```
|
|
|
1. 바인딩
|
|
|
XAML 컨트롤 또는 코드에 선언된 컨트롤 속성간에 통신 채널을 생성한다.
|
|
|
|
|
|
public List<Order> Orders { get; set; }
|
|
|
```
|
|
|
|
|
|
위 컬렉션을 ListView 또는 GridView와 연결하려면 기존에는 코드에서 수동으로 할당해야 했었다.
|
|
|
```csharp
|
|
|
MyList.ItemsSource = Orders;
|
|
|
|
|
|
```
|
|
|
XAML 바인딩을 사용하면 아래와 같이 선언하여 의존성을 끊을 수 있다.
|
|
|
```csharp
|
|
|
<ListView ItemsSource="{Binding Path=Orders}" />
|
|
|
|
|
|
2. DataContext
|
|
|
```
|
|
|
- DataContext
|
|
|
- 바인딩을 사용하여 뷰 모델에 포함된 속성을 모두 연결할 수 있다.
|
|
|
- XAML에서 제공하는 DataContext를 이용하여 ViewModel 클래스 전체를 바인딩 할 수 있다.
|
|
|
- DataContext를 사용하면 모든 public 속성을 XAML에서 사용할 수 있으며, 속성뿐만 아니라 컨트롤 자체도 제어할 수 있다.
|
|
|
- MVVM 패턴의 구현 핵심은 이 계층에 의존하는데, ViewModel로 만든 클래스가 해당 페이지에 DataContext로 정의되는 것이다.
|
|
|
```csharp
|
|
|
<Page x:Class="Sample.MainPage"
|
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
|
DataContext="{Binding Source={StaticResource MainViewModel}}"
|
|
|
mc:Ignorable="d">
|
|
|
</Page>
|
|
|
```
|
|
|
3. INotifyPropertyChanged
|
|
|
4. ICommand |
|
|
\ No newline at end of file |