, 당신은 MouseMove
이벤트를 수신 할 수 :
private void OnMouseMove(object sender, MouseEventArgs e)
{
myViewModel.MousePosition = e.GetPosition(this);
}
를 당신이 코드 숨김 사용하기 때문에 그 MVVM이 아니라고하기 전에 어떤 경우 http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx
에서 코드 숨김은 복잡한 애니메이션 또는 WH로서에서는 XAML (Extensible Application Markup Language)에 표현하기 어렵고 비효율적 시각적 동작을 구현 UI 로직 코드를 포함 할 수있다 코드는 뷰의 일부인 시각적 요소를 직접 조작해야합니다. 단위 테스트에 필요한 논리 코드를 뷰에두면 안됩니다. 일반적으로보기의 코드 숨김에있는 논리 코드는 UI 자동화 테스트 방법을 통해 테스트됩니다.
으로 다른 방법은 전화 당신의 ViewModel의 방법으로 이벤트 호출을 결합하는 CallMethodAction를 사용할 수 지적 : 내가 사용하지 않으 그러나
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity
xmlns:ei="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactions
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseMoved">
<ei:CallMethodAction TargetObject={Binding} MethodName="OnMouseMoved"/>
</i:EventTrigger>
</i:Interaction.Triggers>
상기 이벤트로 여기 바인딩 것 매우 자주 제기되고 바인딩에는 더 많은 오버 헤드가 필요합니다.
또는 CallMethodAction과 함께 이벤트 트리거를 사용할 수 있습니까? 적어도 마우스 이벤트를 뷰 모델로 전송합니다. – McGarnagle
저는이 모든 것을 "모든 코드가 뷰 모델에 있어야합니다"라고 확신하지 않습니다. 결국 버튼과 친구들이 어떻게 구현되는지가 아닙니다. 어느 쪽의 해결책이라도 좋게 보인다. 감사! +1은 지금 당장은 다른 답변이 게시되는지 궁금합니다. –