포스트

WPF 에서 Behavior를 이용한 XAML 내 컨트롤 속성 변경 방법

WPF 에서 Behavior를 이용한 XAML 내 컨트롤 속성 변경 방법

WPF 개발 시, XAML 에서 직접 다른 컨트롤의 속성을 변경하고 싶을 때가 있습니다. 이럴 때 System.Windows.Interactivity 네임스페이스의 Behavior 를 활용하면 코드 비하인드 없이도 이러한 작업이 가능합니다.

목표

Button 클릭 시, ToggleButtonIsChecked 속성을 False 로 설정하여 토글 버튼을 해제합니다.

구현 방법

  1. XAML 네임스페이스 선언 먼저 XAML 상단에 System.Windows.Interactivity 네임스페이스를 선언합니다.
1
2
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
  1. ToggleButton 및 Button 정의 ToggleButtonButton을 XAML에 배치합니다.
1
2
3
4
5
6
7
8
9
10
11
12
<ToggleButton x:Name="filterToggleButton" Content="필터 토글" />

<Button Content="닫기">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <ei:ChangePropertyAction
                TargetObject="{Binding ElementName=filterToggleButton}"
                PropertyName="IsChecked"
                Value="False" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

위 코드에서 Interaction.Triggers를 사용하여 ButtonClick 이벤트에 반응하도록 설정하고, ChangePropertyAction 을 통해 filterToggleButtonIsChecked 속성을 False로 변경합니다.

결과

이제 “닫기” 버튼을 클릭하면 filterToggleButton 의 선택이 해제됩니다. 이러한 방식으로 XAML 내에서 직접 컨트롤 간의 상호작용을 정의할 수 있어, 코드 비하인드를 최소화하고 MVVM 패턴을 더욱 깔끔하게 유지할 수 있습니다.

참고 사항

  • System.Windows.Interactivity는 Blend SDK에 포함되어 있으며, NuGet을 통해 설치할 수 있습니다.
  • ChangePropertyAction 외에도 다양한 액션을 활용하여 복잡한 상호작용을 정의할 수 있습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.