[WPF] 데이터 바인딩 (Data Binding) 이란
주성돈기자
2023.09.03 14:09
데이터 바인딩
앱 UI와 해당 UI가 표시하는 데이터를 연결하는 프로세스.
데이터 바인딩 사용하는 이유
데이터 값에 변화가 필요할 때 사용한다.
예시
- 데이터 값이 변경되어 UI에도 변경 사항이 반영되어야 할 때
- UI에서 데이터 값을 변경되어 내부 데이터가 자동으로 업데이트되어야 할 때
데이터 흐름 방향
소스 : 데이터 변수
타깃 : UI에 보여지는 부분
1. OneWay Binding
소스가 변경될 때마다 타깃이 갱신된다.
2. TwoWay Binding
타깃이나 소스 둘 중에 한 쪽이 변경되면 서로 갱신한다.
3. OneWayToSource
타깃이 변경될 때마다 소스가 갱신된다.
4. OneTime
바인딩 클래스가 인스턴스화될 때 한 번 타깃에 반영되고 그 뒤로 소스가 변경되어도 타깃에 반영되지 않는다.
물론 타깃이 변경되어도 소스에 반영되지 않는다.
사용방법
1. XAML에서 바인딩 사용하기
XAML 파일
<ComboBoxx:Name="FruitComboBox"ItemsSource="{Binding FruitsList}"SelectedItem="{Binding Fruit}"/>
비하인드코드
publicpartialclassFruitStoreView : Window
{
publicFruitStoreView()
{
InitializeComponent();
DataContext = new FruitStoreViewModel();
}
}
2. 비하인드 코드에서 바인딩 사용하기
XAML 파일
<ComboBoxx:Name="FruitComboBox"/>
비하인드 코드
publicFruitStoreView()
{
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;
namespaceStoreExample.ViewModel
{
publicclassFruitStoreViewModel : INotifyPropertyChanged
{
publicFruitStoreViewModel()
{
FruitsList = new List<string>();
FruitsList.Add("Apple");
FruitsList.Add("Banana");
FruitsList.Add("Orange");
Fruit = FruitsList.FirstOrDefault();
}
public List<string> FruitsList { get; set; }
publicstring Fruit { get; set; }
publicevent PropertyChangedEventHandler PropertyChanged;
}
}