C# Dependency Property(의존 속성)와 Attached Property
C#에서 의존 속성(Dependency Property)과 Attached Property는 WPF(Windows Presentation Foundation)에서 중요한 개념으로, UI 요소의 속성을 더 효율적으로 관리하고 상호작용을 처리하는 데 사용됩니다. 이 글에서는 두 개념의 차이점과 사용법을 설명합니다.
1. Dependency Property(의존 속성)란?
Dependency Property는 WPF에서 사용되는 특수한 종류의 속성으로, 일반적인 C#의 속성(Property)과는 다르게 여러 기능을 제공하는 속성입니다. 가장 큰 특징은 속성 값이 단순히 객체의 메모리 위치에만 저장되는 것이 아니라, WPF 시스템 내에서 다양한 기능과 연동된다는 점입니다. 예를 들어, 데이터 바인딩, 스타일, 애니메이션, 템플릿 등에 의존하며, 값이 변경되었을 때 자동으로 UI 업데이트가 가능합니다.
Dependency Property의 특징
- UI 시스템과 통합: WPF의 다양한 기능과 자연스럽게 통합됩니다.
- 메모리 관리: 의존 속성은 내부적으로 효율적인 메모리 관리를 제공합니다.
- 변경 알림: 속성 값이 변경되면 자동으로 UI가 업데이트됩니다.
- 데이터 바인딩: Dependency Property는 데이터 바인딩을 지원하며, 다른 UI 요소나 데이터를 실시간으로 반영할 수 있습니다.
Dependency Property 사용 예제
public class CustomControl : Control
{
public static readonly DependencyProperty MyProperty = DependencyProperty.Register(
"MyProperty", typeof(string), typeof(CustomControl), new PropertyMetadata("기본값"));
public string MyProperty
{
get { return (string)GetValue(MyProperty); }
set { SetValue(MyProperty, value); }
}
}
위 예제에서 MyProperty
는 DependencyProperty
로 등록되었고, 이를 사용하여 값의 변경을 UI에 반영할 수 있습니다.
2. Attached Property란?
Attached Property는 WPF에서 특정 요소에 속성을 "첨부"할 수 있는 특수한 속성입니다. 기본적으로는 다른 요소에 속성을 직접적으로 추가할 수 없는 경우에 사용됩니다. 예를 들어, Canvas.Left
나 Grid.Row
와 같은 속성들이 대표적인 첨부 속성입니다. 첨부 속성은 WPF의 레이아웃 시스템과 상호작용하며, 다양한 컨트롤에 속성을 부여하는 데 사용됩니다.
Attached Property의 특징
- 속성 첨부: 하나의 컨트롤에 다른 속성을 첨부할 수 있습니다.
- UI 요소와 분리: UI 요소의 속성 외부에서 정의되며, 여러 요소에 속성 값을 적용할 수 있습니다.
- 공통 속성 사용: 다양한 컨트롤에서 공통적으로 사용할 수 있는 속성을 정의하는 데 유용합니다.
Attached Property 사용 예제
public static class MyAttachedProperties
{
public static readonly DependencyProperty IsHighlightedProperty =
DependencyProperty.RegisterAttached("IsHighlighted", typeof(bool), typeof(MyAttachedProperties), new PropertyMetadata(false));
public static void SetIsHighlighted(UIElement element, bool value)
{
element.SetValue(IsHighlightedProperty, value);
}
public static bool GetIsHighlighted(UIElement element)
{
return (bool)element.GetValue(IsHighlightedProperty);
}
}
위의 예제에서 IsHighlighted
는 첨부 속성으로, UIElement
에 적용될 수 있습니다. 이렇게 정의된 첨부 속성은 UI 요소에 독립적으로 추가될 수 있습니다.
3. Dependency Property와 Attached Property의 차이점
- Dependency Property는 특정 클래스에 속성으로 정의되며, UI 요소의 상태나 값을 나타내고, UI와 상호작용합니다.
- Attached Property는 속성이 특정 요소에 첨부되어, 해당 요소의 속성 외부에서 사용됩니다. 여러 요소에 동일한 속성을 쉽게 적용할 수 있습니다.
4. 마무리
Dependency Property와 Attached Property는 C# WPF에서 매우 중요한 개념입니다. 의존 속성은 UI와 상호작용하고 데이터 바인딩과 같은 기능을 지원하는 반면, 첨부 속성은 UI 요소에 속성을 부여하여 유연한 UI 구성을 가능하게 합니다. 이 두 가지 속성은 WPF 애플리케이션을 효율적으로 개발하는 데 필수적인 도구입니다.
'C#' 카테고리의 다른 글
C#으로 간단한 계산기 만들기 | WPF 계산기 예제 (0) | 2025.03.31 |
---|---|
C# WPF Command 패턴과 RelayCommand 사용법 (0) | 2025.03.30 |
C# WPF 스타일(Style)과 리소스(Resource) 사용법 (0) | 2025.03.28 |
C#과 Google Vertex AI 통합 - AI 모델 구축 및 배포 (1) | 2025.03.27 |
WPF 데이터 바인딩 완벽 정리 | OneWay, TwoWay, INotifyPropertyChanged (1) | 2025.03.27 |