-
WPF Binding Path에 관하여 (바인딩 경로)닷넷/WPF 2024. 4. 8. 22:02반응형
2023.04.07 - [닷넷/WPF] - C# WPF에서 Binding(바인딩)이란?
이전글을 통해서 WPF에서 데이터 바인딩은 UI 요소와 데이터 소스 간의 연결을 쉽게 설정할 수 있는 기능임을 알 수 있습니다. 이 바인딩을 잘 쓰기 위해서는 바인딩 구문을 아는 것이 중요합니다.
그 중에서 바인딩 경로는 몇 가지 유형이 있으며,
경로 지정을 어떻게 하느냐에 따라서 자기 자신의 뷰모델이 아닌 부모 요소 혹은 그 외 기타와 연결지을 수 있고, 코드 비하인드 없이 xaml에서 충분히 이벤트 처리를 할 수도 있습니다.
바인딩 경로 유형
1. 속성 바인딩
앞서 이전글에서도 설명한 유형으로 가장 일반적으로 사용되는 유형입니다.
Path는 생략 가능합니다.
<TextBlock Text="{Binding PropertyName}" /> <!-- 혹은 --> <TextBlock Text="{Binding Path=PropertyName}" />
2. 속성 경로
복합 객체 내의 속성에 바인딩할 때 사용됩니다.
Path는 생략 가능합니다.
public class MyViewModel : ViewModelBase { private Person _person; public Person Person { get => _person; set => SetProperty(ref _person, value); } } public class Person { public string Name {get; set;} }
<TextBlock Text="{Binding Person.Name}" /> <!-- 혹은 --> <TextBlock Text="{Binding Path=Person.Name}" />
3. 인덱서
배열이나 딕셔너리와 같은 인덱스를 사용하여 바인딩 할 수 있습니다.
<ListBox ItemsSource="{Binding Persons}"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Path=[0]}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
4. RelativeSource
상대적인 소스를 참조하여 바인딩할 때 사용됩니다.
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBox}}, Path=DataContext.Persons[0].Name}" />
바인딩 경로에 대한 자세한 내용은 위 링크에서 확인할 수 있습니다.
바인딩 경로 오류
WPF에서는 바인딩 경로가 잘못 되었을 때 런타임이 실패하지는 않습니다. 따라서 모르고 넘어갈 수도 있는 일을
Visual Studio 2022에서 WPF를 개발한다면, 바인딩 경로가 잘못 되었을 때 쉽게 알 수 있습니다.
위 이미지와 같이 프로젝트를 빌드하여 실행 하면 바인딩 오류가 있을 때 빨간색 버튼으로 바뀌고, 바인딩 오류 수를 알려줍니다.
이를 클릭하면
어디에서 오류가 있는지 알 수 있습니다.
반응형'닷넷 > WPF' 카테고리의 다른 글
WPF DevExpress LayoutPanel의 header에 custom button 놓기 (0) 2024.04.22 C# WPF, WinForm DevExpress GridControl 붙여넣기 기능 (0) 2024.04.22 WPF DevExpress 뷰가 로드될 때 특정 컨트롤(TextBox, TextEdit 등등)에 Focus 주는 방법 (0) 2024.04.01 C# WPF DataGrid에 Row번호 출력 되는 칼럼 추가하기 (닷넷프레임워크 .net framework 4.0 기준) (0) 2023.08.10 WPF Converter (컨버터, 값 변환기) (0) 2023.06.09