2011-10-30 4 views
0

이미 몇 가지 질문이 있지만 어떻게해야 할 지 모르겠지만 새 창을 열려고하는 버튼이 있습니다. 순수한 xaml에서 이것을합니까? 내 CodeBehind 또는 ViewModel에서 호출하지 않고 대화 상자를 열 수있는 방법을 모르겠다. 나는 이것을 위해 어떤 mvvm 툴킷도 사용하지 않고있다.버튼 클릭으로 MVVM보기를 엽니 다.

+0

새 창은 팝업 창 또는 완전 독립형 비 모달 창입니까? – sll

답변

0

이 같이 할 수있는 ....

당신은 <x:Code>를 사용할 수 있습니다

<Button Content="OK" Click="Button_Click"/> 
<x:Code> 
    private void Button_Click(object sender,RoutedEventArgs e) 
    { 
    MessageBox.Show("Hello"); 
    } 
</x:Code> 

표준 방법이 commands을하다 할 수 있습니다.

+0

하지만 명령을 사용하면 내 ViewModel에서이를 만들어야하고, 새 창을 표시해야하므로 MVVM을 깨뜨릴 수 있습니다. –

+4

이것은 여전히 ​​효과적으로 코드 뒤에 있으며 xaml쪽으로 이동합니다. .. –

+0

나는 MVC 프레임 워크를 사용하지 않았기 때문에 최후에 코드가 마음에 들지는 않았지만 가장 간단한 해결책이었다. –

3

내 CodeBehind 또는 ViewModel에서 호출하지 않고도 대화 상자를 열 수있는 방법을 알 수 없습니다.

일반적으로 코드에서이를 수행하지만 대부분의 MVVM 프레임 워크는이를 추상화하는 방법을 제공합니다.

이것은 일반적으로 어떤 형태의 서비스 위치를 통해 처리됩니다 (예 : ViewService 또는 유사한 것을 ViewModel에 주입). 다른 옵션은 MVVM Light의 접근 방식 인 일부 형식의 메시징을 사용하는 것입니다.

이러한 접근법의 장점은 VM에 대한 지식 없이도 VM을 작성할 수 있다는 것입니다. 코드를 작성하는 방식을 변경하면 (ViewModel의) 명령이 일부 이벤트를 트리거하고 올바른 보기가 열립니다. 이렇게하면 VM 계층에서 View 종속성이 유지됩니다.