KeiStory

WPF RelativeSource 를 이용한 바인딩

 

WPF에서 RelativeSource를 이용한 바인딩은 DataContext 를 유연하게 지정할 수 있는 기능으로

이 방식을 사용하면 현재 요소를 기준으로 상대적인 위치에 있는 다른 요소의 속성에 바인딩할 수 있습니다.

즉, 엘리먼트 트리 내에 조상 엘리먼트나 엘리먼트 그 자체를 참조하여 바인딩을 처리합니다.

 

RelativeSource의 주요 모드

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' 카테고리의 다른 글

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

공유하기

facebook twitter kakaoTalk kakaostory naver band