본문 바로가기
C#

C# WPF 데이터 바인딩 심층 분석 및 고급 활용법

by samie 2025. 4. 3.
C# WPF 데이터 바인딩 심층 분석 및 고급 활용법

C# WPF 데이터 바인딩 심층 분석 및 고급 활용법

WPF 애플리케이션에서 데이터 바인딩을 최적화하는 방법

1. WPF 데이터 바인딩이란?

데이터 바인딩(Data Binding)은 WPF 애플리케이션에서 UI 요소와 데이터 소스를 연결하는 강력한 기능입니다.

이를 활용하면 코드에서 UI 요소를 직접 조작할 필요 없이, 데이터 변경 사항이 UI에 자동으로 반영됩니다.

2. 데이터 바인딩의 주요 요소

  • 바인딩 소스(Binding Source): ViewModel 또는 모델 객체
  • 바인딩 타겟(Binding Target): UI 요소 (예: TextBox, Label, ListView)
  • 바인딩 모드(Binding Mode): OneWay, TwoWay, OneTime 등
  • 컨버터(Converter): 데이터 변환을 위한 ValueConverter

3. 다양한 바인딩 모드

WPF에서는 여러 가지 바인딩 모드를 제공하며, 적절한 모드를 선택하면 성능을 최적화할 수 있습니다.

바인딩 모드 설명 사용 예
OneWay 데이터 소스에서 UI로 값이 전달됨 라벨, 리스트 등
TwoWay UI와 데이터 소스가 서로 값을 주고받음 입력 폼, 슬라이더 등
OneTime 초기 로딩 시 한 번만 바인딩 디폴트 값 설정

4. MVVM 패턴과 INotifyPropertyChanged

MVVM(Model-View-ViewModel) 패턴은 WPF 개발에서 필수적인 아키텍처 패턴입니다.

ViewModel의 속성이 변경될 때 UI가 자동으로 업데이트되려면 INotifyPropertyChanged 인터페이스를 구현해야 합니다.

INotifyPropertyChanged 예제


using System.ComponentModel;
using System.Runtime.CompilerServices;

public class MainViewModel : INotifyPropertyChanged
{
    private string _name;
    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value)
            {
                _name = value;
                OnPropertyChanged();
            }
        }
    }

    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}
        

5. 종속성 속성 (Dependency Property)

종속성 속성(Dependency Property)은 WPF의 핵심적인 바인딩 메커니즘 중 하나입니다.

기본적인 속성보다 강력한 기능을 제공하며, UI 업데이트 성능을 최적화하는 데 유용합니다.

종속성 속성 예제


using System.Windows;
using System.Windows.Controls;

public class CustomTextBox : TextBox
{
    public static readonly DependencyProperty CustomTextProperty =
        DependencyProperty.Register("CustomText", typeof(string), typeof(CustomTextBox));

    public string CustomText
    {
        get { return (string)GetValue(CustomTextProperty); }
        set { SetValue(CustomTextProperty, value); }
    }
}
        

6. Command 패턴과 XAML 바인딩

버튼 클릭과 같은 이벤트를 ViewModel에서 처리하려면 Command 패턴을 사용해야 합니다.

Command 패턴 예제


using System;
using System.Windows.Input;

public class RelayCommand : ICommand
{
    private readonly Action _execute;
    private readonly Func _canExecute;

    public RelayCommand(Action execute, Func canExecute = null)
    {
        _execute = execute;
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter) => _canExecute == null || _canExecute(parameter);
    public void Execute(object parameter) => _execute(parameter);
    public event EventHandler CanExecuteChanged;
}
        
    

    

결론

WPF 데이터 바인딩을 제대로 활용하면 코드의 유지보수성과 성능이 크게 향상됩니다.

MVVM 패턴, INotifyPropertyChanged, 종속성 속성, Command 패턴 등을 적절히 사용하여 최적화된 WPF 애플리케이션을 개발하세요.


TOP

Designed by 티스토리