2015-01-20 2 views
3

파일 -> 종료의 닫기 작업에 MVVM을 사용하면 무슨 점이 있습니까?C# : WPF MVVM 명령 바인딩 대 이벤트 콜백

Click 이벤트에 대한 이벤트 콜백을 간단히 만들 수있는 경우 닫기 명령을 만드는 것이 많은 것처럼 보입니다. 이런 식으로 데이터 나 비즈니스 로직과 아무 관련이 없기 때문에 MVVM 접근 방식을 사용하는 것이 중요하지 않습니다. 왜 그냥 사용하지 다음

XAML :

<MenuItem Header="_File" Background="WhiteSmoke"> 
    <MenuItem Name ="Exit" Tag="Exit" Header="Exit" Click="Exit_Click"/>     
</MenuItem> 

코드 숨김

private void Exit_Click(object sender, RoutedEventArgs e) 
{ 
    this.Close(); 
} 

답변

8

해당 경우의 경우 약간의 인수가 있습니다. 아무 것도 없다면, 을 닫는 것보기는 전체보기와 관련이있는 것으로 쉽게 해석 될 수 있으므로 Click 이벤트 핸들러는 시작하는 것이 좋습니다. 뷰 관련 코드는 VM이 ​​아닌보기로 이동합니다.

그러나 나는 Command을 설정하는 것이 어렵다는 당신의 생각에 도전 할 것입니다. DelegateCommand 사용 :

public ICommand ExitCommand {get; private set;} 

public MyViewModel() 
{ 
    ExitCommand = new DelegateCommand(ExitApp); 
} 

핸들러는 어느 쪽이든 동일합니다 http://wpftutorial.net/DelegateCommand.html두 줄을 추가 코드의이 필요합니다. Exit에는 명령이 필요하지 않을 수도 있지만 일반적으로 ICommand은 올바른 방법이며 실제로 그렇게 어렵지는 않습니다.

1

당신은 전적으로 옳습니다 - 핸들러가 다음이 MVVM을 아프게하지 않는 관련 순수 UI 인 경우 어떤 수단으로 (일부 극단 주의자들의 말에도 불구하고). MVVM은 UI와 비즈니스 로직을 분리하기 위해 만들어진 패턴입니다. 코드의 "UI 것들"은 괜찮습니다.