[WPF] 데이터 바인딩 (Data Binding) 이란

title-gonggo.png

[WPF] 데이터 바인딩 (Data Binding) 이란

주성돈기자

데이터 바인딩

앱 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;
    }
}
      
0 Comments

최근글


새댓글


Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand