WPF에서 RelativeSource를 이용한 바인딩은 DataContext 를 유연하게 지정할 수 있는 기능으로
이 방식을 사용하면 현재 요소를 기준으로 상대적인 위치에 있는 다른 요소의 속성에 바인딩할 수 있습니다.
즉, 엘리먼트 트리 내에 조상 엘리먼트나 엘리먼트 그 자체를 참조하여 바인딩을 처리합니다.
a. FindAncestor: 현재 요소의 조상 요소를 찾아 바인딩합니다.
b. Self: 현재 요소 자신에게 바인딩합니다.
c. TemplatedParent: 템플릿이 적용된 요소에 바인딩합니다.
d. PreviousData: ItemsControl에서 이전 항목의 데이터에 바인딩합니다.
아래 코드를 보면
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:src="clr-namespace:WpfApp"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Center">
<TextBlock
Text="{Binding RelativeSource={RelativeSource self}, Path=FontFamily}" />
</StackPanel>
<StackPanel
Orientation="Horizontal"
HorizontalAlignment="Center">
<TextBlock
Text= "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type StackPanel}}, Path=Orientation}" />
</StackPanel>
</StackPanel>
</Window>
첫번째 self 는 자기 자신을 가리켜 자신의 FontFamily 값을 Text 에 표시합니다.
두번째 FindAncestor 는 앨리먼트 트리에 StackPanel 을 찾아 Orientation 값을 화면에 표시하게됩니다.
결과
WPF 기초 - Style.Triggers 사용하기 (0) | 2024.07.17 |
---|---|
WPF 기초 - Style 사용하기 (0) | 2024.07.16 |
WPF 기초 - Binding (0) | 2024.07.16 |
WPF PageFunction 사용방법 (0) | 2024.07.15 |
WPF 기초 - ContextMenu 사용하기 (0) | 2024.07.15 |