반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/11   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Archives
Today
Total
관리 메뉴

욱꾸미의 주꾸미 발

[WPF] ViewModel에서 this.Close()구현 본문

WPF

[WPF] ViewModel에서 this.Close()구현

욱꾸미 2022. 5. 23. 23:52
반응형

안녕하세요.

wpf에서 창을 닫을때 사용하는 this.close()를 ViewModel에서 구현해 보고자합니다.

해당 글은 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gostarst&logNo=220100315130 

 

WPF MVVM 패턴에서 Window Close

발췌 : http://jkshay.com/closing-a-wpf-window-using-mvvm-and-minimal-code-behind/ 뷰: public View()...

blog.naver.com

글을 참조하시면 쉽게 구현 할 수 있습니다.

 

저는 여기서 좀더 나아가 간단한 수정을 통해 기존창에서 Sub Form을 호출하고 Sub Form이 종료되도록 구현해 보겠습니다.

 

순서는 메인화면에서 추가창을 열어 데이터를 입력후 확인 버튼을 눌러 DB에 Data를 Insert합니다.

여기서 정상적으로 insert가 추가창이 닫히면서 메인화면이 나오고, db insert가 실패하면 추가창이 그대로 남아있게 만들 예정입니다.

 

버튼에 대한 Command가 진행되는 함수입니다.

먼저 호출할 xaml객체를 생성하고 연결할 ViewModel객체를 만들어 주고

xaml과 ViewModel을 연결해 줍시다.

 

다음은 이번 글의 핵심인 ViewModel을 통한 Close Window 이벤트를 추가하겠습니다.

 

코드입니다.

            InfoWindow infoWindow = new InfoWindow();
            InfoViewModel infoViewModel = new InfoViewModel("Insert","");
            infoWindow.DataContext = infoViewModel;
            if (infoViewModel.CloseAction == null)
                infoViewModel.CloseAction = new Action(infoWindow.Close);

            infoWindow.ShowDialog();

if구문 부터가 핵심구문입니다.

 

만약 ViewModel에서 CloseAction이라는 메소드가 null이면

새로운 Action을 추가해 줍니다.

 

추가하는 Action은 저렇게 생성한 객체 xaml변수명에 Close를 붙여줍니다.

 

그리고 해당 호출한 infoViewModel 파일에서는

 

public Action CloseAction { get; set; }

을 생성한뒤 필요한 곳에

 

CloseAction();

이렇게 간단하게 호출을 통해 사용하시면 되겠습니다.

 

감사합니다. :D

반응형