| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 3일컷
- 프로그래머스
- delegate
- level2
- level4
- Java
- 씨샵
- MVVM
- 보통2종
- MySQL
- springboot
- WSL
- 쿼리
- 코테
- SQL
- 자바
- 닫기버튼
- c#
- Spring Boot
- WPF
- Python
- 일반화
- 코딩테스트
- JPA
- 1931번
- 백준
- 스프링부트
- 운전면허
- level3
- programmers
- Today
- Total
욱꾸미의 주꾸미 발
[WPF] ViewModel에서 this.Close()구현 본문
안녕하세요.
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
'WPF' 카테고리의 다른 글
| [WPF] 서브 윈도우, 페이지에서 데이터 받아오기 (0) | 2023.07.25 |
|---|---|
| [WPF] DataGrid Scroll시 체크박스 해제되는 에러 (2) | 2023.05.12 |
| [WPF] 타이틀 바 만들기_닫기, 최소화, 사이즈 조절버튼(1) (0) | 2022.04.25 |
| [WPF] IP Address Mask Control 커스텀 이벤트 수정 (0) | 2021.12.28 |
| [WPF] IP Address Mask Control 커스텀 이벤트 추가 (0) | 2021.12.20 |