2009-11-17 4 views
2

우리는 WPF Toolkit의 WPF DataGrid를 사용 중이며 MVVM을 사용하고 있습니다. MVVM에서 MultiSelect를 사용할 때 몇 가지 문제점을 찾고 있습니다. ViewModel에서 "IsSelected"를 사용하여 DataGrid에서 행을 선택할 때 이벤트를 가져올 수 있습니다. 이것은 단일 선택에 대해 잘 작동합니다.WPF Toolkit MVVM을 사용하는 DataGrid MultiSelect

"SelectionMode = Extended"로 설정 한 경우 코드 비하인드에서 DataGrid.SelectionChanged의 첫 번째 행을 선택한 경우에만 이벤트를 가져오고 각 선택 이벤트를 가져 오지만 실제로 ViewModel에서이 작업을 수행하려고합니다. 아마도이 누락 된 부분에 대한 간단한 해결책이있을 것입니다. 나는 또한 SelectedItems (plural)를 바인딩에 시도하여 컬렉션을 모두 가져 왔지만 SelectedItems는 읽기 전용이므로 바인딩 할 수 없습니다. 이 방법을 코드 숨김에서 ViewModel로 옮길 수 없으므로이 작업을 수행하는 방법에 대한 아이디어는 분명 감사 할 것입니다.

답변

2

코드 숨김 파일에서 SelectionChanged 이벤트를 수신하고 호출을 ViewModel에 위임 할 수 있습니다.

M-V-VM 패턴은 코드 숨김 파일에서 모든 코드를 제거하지 않습니다. 그것은 뷰 로직을 ViewModel에 넣고 뷰를 가능한 한 바보처럼 만드는 것입니다.

구체적인 예제에 관심이 있으시면 WPF Application Framework (WAF)의 ViewModel 샘플을 살펴보십시오.

나는이 도움이되기를 바랍니다.

+0

안녕하세요. 응답 해 주셔서 감사합니다. 네, MVVM의 개념은 코드의 코드를 완전히 없애지는 않지만,이 코드에 코드를 포함하지 않는 다른 답변이 있다고 생각합니다. 솔루션은 AttachedBehavior 일 수 있습니다. 나는 아직도 찾고있다. –

+0

나는 더 나은 것을 찾으려고했지만 운이 없었습니다. Event to Command와 함께 MVVM Toolkit Light를 사용할 수 있었지만 Codebehind의 SelectionChanged에서 위임하는 것으로 끝났습니다. 다시 한번 감사드립니다. –

+0

MVVM Light Toolkit의 EventToCommand를 EventTrigger의 일부로 사용하여 성공했습니다. Laurent Bugnion의 견본을보고 매우 도움이되었다고 생각했습니다. http://blog.galasoft.ch/archive/2009/12/17/silverlight-4-dragampdrop-with-eventtocommand.aspx 틀림없이 나는 DataGrid 시나리오에서 사용되었습니다 ... 다른 데이터 템플릿에 바인딩되었습니다. –

관련 문제