728x90
데이터 바인딩
앱 UI와 해당 UI가 표시하는 데이터를 연결하는 프로세스.
데이터 바인딩 사용하는 이유
데이터 값에 변화가 필요할 때 사용한다.
예시
- 데이터 값이 변경되어 UI에도 변경 사항이 반영되어야 할 때
- UI에서 데이터 값을 변경되어 내부 데이터가 자동으로 업데이트되어야 할 때
데이터 흐름 방향
소스 : 데이터 변수
타깃 : UI에 보여지는 부분
1. OneWay Binding
소스가 변경될 때마다 타깃이 갱신된다.
2. TwoWay Binding
타깃이나 소스 둘 중에 한 쪽이 변경되면 서로 갱신한다.
3. OneWayToSource
타깃이 변경될 때마다 소스가 갱신된다.
4. OneTime
바인딩 클래스가 인스턴스화될 때 한 번 타깃에 반영되고 그 뒤로 소스가 변경되어도 타깃에 반영되지 않는다.
물론 타깃이 변경되어도 소스에 반영되지 않는다.
사용방법
1. XAML에서 바인딩 사용하기
XAML 파일
<ComboBox x:Name="FruitComboBox"
ItemsSource="{Binding FruitsList}"
SelectedItem="{Binding Fruit}"/>
비하인드코드
public partial class FruitStoreView : Window
{
public FruitStoreView()
{
InitializeComponent();
DataContext = new FruitStoreViewModel();
}
}
2. 비하인드 코드에서 바인딩 사용하기
XAML 파일
<ComboBox x:Name="FruitComboBox"/>
비하인드 코드
public FruitStoreView()
{
InitializeComponent();
var ViewModel = new FruitStoreViewModel();
FruitComboBox.ItemsSource = ViewModel.FruitsList;
FruitComboBox.SelectedItem = ViewModel.Fruit;
}
1, 2번 모두 ViewModel은 같다.
ViewModel
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace StoreExample.ViewModel
{
public class FruitStoreViewModel : INotifyPropertyChanged
{
public FruitStoreViewModel()
{
FruitsList = new List<string>();
FruitsList.Add("Apple");
FruitsList.Add("Banana");
FruitsList.Add("Orange");
Fruit = FruitsList.FirstOrDefault();
}
public List<string> FruitsList { get; set; }
public string Fruit { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
}
반응형
'개발공부 > WPF' 카테고리의 다른 글
[WPF] 트리거(Trigger) 설명 및 예제 (10) | 2021.11.18 |
---|---|
[WPF] 의존 프로퍼티(Dependency Property) 이해하기 (0) | 2021.11.08 |
[WPF] 라우티드 이벤트(Routed Event) 이해하기 (0) | 2021.11.07 |
[WPF] WPF 주요 특징 정리 (0) | 2021.11.07 |
[XAML] 레이아웃 종류 알아보기 + 예제 정리 (0) | 2021.10.29 |