MVVM을 좋아합니다. 나는 그것을 좋아하지 않지만 그것을 좋아한다. 대부분은 의미가 있습니다. 그러나 XAML을 작성하고 코드 숨김에 코드를 작성할 필요가 없도록 많은 코드를 작성하도록 권장하는 기사를 계속 읽습니다.MVVM Madness : Commands
예를 들어 설명해 드리겠습니다.
최근 내 ViewModel의 명령을 ListView MouseDoubleClickEvent에 연결하려고했습니다. 어떻게하는지 잘 모르겠습니다. 다행히도 Google은 모든 것에 대한 해답을 가지고 있습니다. 나는 다음과 같은 기사를 발견
- http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html
- http://joyfulwpf.blogspot.com/2009/05/mvvm-invoking-command-on-attached-event.html
- http://sachabarber.net/?p=514
- http://geekswithblogs.net/HouseOfBilz/archive/2009/08/27/adventures-in-mvvm-ndash-binding-commands-to-any-event.aspx
- http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/
를 솔루션이 명령에 대한 이해에 도움이되는 동안, 문제가 있었다. 앞서 언급 한 솔루션 중 일부는 종속성 속성 뒤에 "내부"를 추가하는 일반적인 해킹 때문에 WPF 디자이너를 사용할 수 없게 만들었습니다. WPF 디자이너는 찾을 수 없지만 CLR은 찾을 수 있습니다. 일부 솔루션은 동일한 컨트롤에 대해 여러 명령을 허용하지 않았습니다. 일부 솔루션은 매개 변수를 허용하지 않았습니다.
몇 시간 동안 실험 후 난 그냥이 작업을 수행하기로 결정
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) {
ListView lv = sender as ListView;
MyViewModel vm = this.DataContext as MyViewModel;
vm.DoSomethingCommand.Execute(lv.SelectedItem);
}
그래서, MVVM 순수 주의자는,이 뭐가 잘못 말해주십시오? 나는 아직도 나의 명령을 단위 테스트 할 수있다. 이것은 매우 실용적이지만 "ZOMG ...의 지침을 위반하는 것 같습니다. 코드 숨김 코드가 있습니다 !!!!" 생각을 공유하십시오. 사전에
감사합니다.
나는 이걸 직접 해냈다. 아무 문제가 없다. – Schneider
ZOMFG CODE BEHIND !!!!!!! – Pierreten
@Schneider에 동의 할 것입니다. 이것이 완벽한 의미입니다. 실제로 소위 코드 숨김 파일 사용을 피하기 위해 필요한 배관 코드의 양은 여전히 저의 머리를 회전시킵니다. –