반응형
InputBinding으로 보통 마우스 클릭 위주로 바인딩은 쉽다.
하지만 MouseWheel의 Up Down의 경우 MVVM 으로 바인딩하려면 다른방법을 써야한다.
Behavior를 이용하는 방법인데 이는 아래와 같다.
일단 MouseWheel의 Argument를 가져오기 위해 어떤 클래스를 상속해야하는지 확인해보자.
위와 같이 MouseWheel Event는 UIElement에서 내려오는것을 확인할 수 있다.
그럼 Behavior 클래스를 만들어보자.
public class MouseWheelEventBehavior : Behavior<UIElement>
{
public int Delta
{
get { return (int)GetValue(DeltaProperty); }
set { SetValue(DeltaProperty, value); }
}
public static readonly DependencyProperty DeltaProperty =
DependencyProperty.Register("Delta", typeof(int), typeof(MouseWheelEventBehavior));
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.MouseWheel += AssociatedObject_MouseWheel;
}
private void AssociatedObject_MouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
this.Delta = e.Delta;
}
protected override void OnDetaching()
{
base.OnDetaching();
if (this.AssociatedObject != null)
{
this.AssociatedObject.MouseWheel -= AssociatedObject_MouseWheel;
}
}
}
DependencyProperty로 바인딩할 Delta를 선언해주고, 마우스 휠 이벤트가 발생될 때마다 Delta값을 바인딩 처리해준다.
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
부모에 위와 같이 추가해주고
<ListBox>
<i:Interaction.Behaviors>
<b:MouseWheelEventBehavior Delta="{Binding Delta, Mode=TwoWay}"/>
</i:Interaction.Behaviors>
</ListBox>
위와 같이 바인딩 처리를 해주면된다.
끝!!
반응형
'프로그래밍 > WPF' 카테고리의 다른 글
[WPF] 외부 Font 적용하기 - Roboto (0) | 2022.09.08 |
---|---|
[WPF] String Color to Brush (0) | 2022.09.08 |
[WPF] Usercontrol 사용 시, 디자이너 Exception 문제 (0) | 2022.08.04 |
[WPF] TabControl header Content Binding (0) | 2022.08.03 |
[WPF] MouseBinding KeyBinding Binding (0) | 2022.08.03 |