2010-12-21 3 views
0

MainViewModel에 메뉴가 있습니다. 이제 특정 메뉴 항목을 선택합니다. 이미로드 된 뷰의 데이터를 업데이트하려고합니다.MVVM 메시징 또는 이벤트 또는 다른 옵션이 있습니까?

즉, 해당 인스턴스를 통해 메소드를 호출하고 데이터 속성을 변경하려고하면 MainViewModel에 해당 viewModel의 인스턴스가 있지만보기에 변경 사항이 표시되지 않습니다. 반면에 해당 viewModel의 뷰에있는 버튼을 사용하여 relay 명령을 통해 해당 메서드를 호출하면 동일한 변경이 발생합니다.

이제 MainViewModel에서 해당 viewModel의 릴레이 명령을 호출해야합니다. 문제가 해결 될 것이라고 생각하지만 어떻게해야합니까? 가장 쉬운 방법. 메시징을 사용해야합니까?

답변

3

MVVM Light 메신저 클래스를 사용해 보았습니다. 매우 간단하고 우아한 (ViewModels가 느슨하게 결합 된 상태로 유지됨) !! 가장 중요한 것은 작동한다는 것입니다.

 
code: 

Send: 
Messenger.Default.Send(stringParameter, "key_anything"); 

Register: 
Messenger.Default.Register<string>(this, "key_anything", invokeFunction); 

private void invokeFunction(string stringParamter) 
{ 
//code goes here! 
} 

+0

"ViewModels ** de ** coupled"를 유지해야합니까? –

+0

@chibacity, 맞습니다. 느슨하게 단어를 놓친 것입니다. 감사합니다. 고마워요. – WhoIsNinja

관련 문제