Microsoft.Xaml.Behaviors.Wpf

Microsoft.Xaml.Behaviors.Wpf는 WPF에서 동작Behavior 및 트리거를 구현하기 위한 라이브러리로, XAML에서 선언적으로 이벤트 및 상호작용을 정의할 수 있도록 지원합니다.

주요 기능

Behavior 지원

  • 동작Behavior을 통해 특정 UI 요소의 동작을 쉽게 확장 가능.
  • 이벤트나 속성 변경에 대해 동적으로 반응하는 로직 구현 가능.

Trigger 지원

  • XAML에서 이벤트 기반 트리거를 선언적으로 작성.
  • 예: EventTrigger를 통해 특정 이벤트 발생 시 명령Command을 실행.

Blend SDK와의 호환성

  • 이전에 사용되던 System.Windows.Interactivity의 대체 라이브러리.
  • Blend for Visual Studio에서 시각적으로 상호작용 정의 가능.

MVVM 패턴 지원

  • ViewModel과의 명령 바인딩을 쉽게 구현.

설치 방법

NuGet을 통해 설치

NuGet 패키지 관리자를 열고 다음 명령 실행

Install-Package Microsoft.Xaml.Behaviors.Wpf

또는 Visual Studio의 NuGet 패키지 관리자 UI에서 Microsoft.Xaml.Behaviors.Wpf를 검색하여 설치.

주요 클래스와 사용법

Interaction 클래스

  • XAML에서 BehaviorTrigger를 설정하는 루트 클래스.

Behavior 클래스

  • 특정 UI 요소의 동작을 확장하는 기본 클래스.
  • 사용자 정의 동작을 작성할 수 있음.

EventTrigger 클래스

  • 특정 이벤트 발생 시 작업을 수행하도록 트리거를 정의.

InvokeCommandAction 클래스

  • ViewModel의 Command를 호출하는 데 사용.

사용 예제

명령 실행: EventTrigger + InvokeCommandAction

Button 클릭 시 ViewModel의 ClickCommand를 호출하는 예제:

  • XAML
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
        xmlns:vm="clr-namespace:MyNamespace"
        Title="Example" Height="200" Width="300">
    <Window.DataContext>
        <vm:MyViewModel />
    </Window.DataContext>
    <Grid>
        <Button Content="Click Me">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <i:InvokeCommandAction Command="{Binding ClickCommand}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </Grid>
</Window>
  • ViewModel
public partial class MyViewModel : ObservableObject
{
    public ICommand ClickCommand { get; }

    public MyViewModel()
    {
        ClickCommand = new RelayCommand(OnClick);
    }

    private void OnClick()
    {
        Console.WriteLine("Button clicked!");
    }
}

사용자 정의 동작: Behavior 상속

사용자 정의 동작Behavior을 만들어 특정 동작을 추가하는 예제:

  • CustomBehavior.cs:
public class CustomBehavior : Behavior<Button>
{
    protected override void OnAttached()
    {
        base.OnAttached();
        AssociatedObject.Click += OnButtonClick;
    }

    protected override void OnDetaching()
    {
        base.OnDetaching();
        AssociatedObject.Click -= OnButtonClick;
    }

    private void OnButtonClick(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Custom Behavior Executed!");
    }
}
  • XAML
<Button Content="Custom Behavior Example">
    <i:Interaction.Behaviors>
        <local:CustomBehavior />
    </i:Interaction.Behaviors>
</Button>

Microsoft.Xaml.Behaviors.Wpf와 System.Windows.Interactivity의 차이점

항목Microsoft.Xaml.Behaviors.WpfSystem.Windows.Interactivity
지원현재 유지 및 업데이트 중더 이상 지원되지 않음
NuGet 패키지Microsoft.Xaml.Behaviors.WpfVisual Studio Blend SDK 필요
플랫폼WPF 및 UWPWPF
주요 클래스Behavior, Trigger, Action동일하지만 더 이상 업데이트 없음

주요 장점

MVVM 패턴 강화

  • ViewModel 명령과 이벤트를 쉽게 연결.

코드 중복 감소

  • XAML에서 선언적으로 상호작용을 정의하므로 코드비하인드가 필요 없음.

확장성

  • 사용자 정의 동작과 트리거를 만들어 UI 요소를 확장 가능.

참고 자료