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에서
Behavior
와Trigger
를 설정하는 루트 클래스.
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.Wpf | System.Windows.Interactivity |
---|---|---|
지원 | 현재 유지 및 업데이트 중 | 더 이상 지원되지 않음 |
NuGet 패키지 | Microsoft.Xaml.Behaviors.Wpf | Visual Studio Blend SDK 필요 |
플랫폼 | WPF 및 UWP | WPF |
주요 클래스 | Behavior , Trigger , Action | 동일하지만 더 이상 업데이트 없음 |
주요 장점
MVVM 패턴 강화
- ViewModel 명령과 이벤트를 쉽게 연결.
코드 중복 감소
- XAML에서 선언적으로 상호작용을 정의하므로 코드비하인드가 필요 없음.
확장성
- 사용자 정의 동작과 트리거를 만들어 UI 요소를 확장 가능.
참고 자료
- NuGet 패키지: Microsoft.Xaml.Behaviors.Wpf
- 공식 문서: Microsoft Docs