무효 클릭 IP 추적 중...
c#/wpf

[c# wpf] command 개념/사용법(2)

꼬예 2022. 7. 5.
[c# wpf] command 개념/사용법(2)

 

 

(이번 포스팅은 command(1)편을 읽고 왔다는 전제로 작성되었습니다.)

 

버튼을 클릭하면  text박스창에 입력된 글자메세지박스로 출력되는것을 구현해보겠습니다.

 

[c# wpf] command 개념/사용법(2)

 

 

이 글을 읽기 전 선수 지식 포스팅

 

 

//MainWindow.xaml

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

 

TextBox태그태그를 가리키는 이름(messagebox)을 추가해주었습니다.

 

그리고  CommandParameter라는 친구가 새롭게 등장하는데요.

이 친구는 xaml에서 전달받은 값c# 코드로 넘겨주는 역할을 합니다.

 

예제코드에서는 바인딩을 통해 TextBox로부터 전달받은 값을  CommandParameter로 전달 하는 구조입니다.

(바인딩이 낯선분은 데이터바인딩 포스팅을 읽고 와주시기 바랍니다.)

 

c#코드에서는 CommandParameter로부터 전달 받은 값을 어떻게 처리할까요?

 

//MessageCommand.cs

CommandParameter로 들어온 값은 Execute함수의 인자로 들어오게 됩니다.

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

 

타입이 object이기 때문에 실제로 들어오는 값의 타입은 string이지만 object박싱이 됩니다.

 

이를 재사용하기 위해서는 다시 string으로 언박싱을 해야합니다.

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

(박싱, 언박싱이 낯선분은 해당 포스팅을 참조하기 바랍니다.)

 

하지만 Invoke부분이 에러가 뜹니다.

왜일까요?

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

 

왜냐하면 우리가 앞서 정의한 Action인자를 받지 않는 델리게이트 형태이기 때문입니다.

 

즉  string인자를 받는 형태로 변경해줘야 합니다.

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

(Action 델리게이트 부분이 낯선분은 해당 포스팅을 참조하기 바랍니다.)

 

마찬가지로 ViewModel에 있는 Action 델리게이트에 구독시킨 함수도 수정해줘야 합니다.

 

//MessageViewModel.cs

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

 

string 인자를 받는 형태DisplayMessage 함수를 수정해줍니다.

 

output:

 

[c# wpf] command 개념/사용법(2) - 이 글을 읽기 전 선수 지식 포스팅

 

 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글

꼬예님의
글이 좋았다면 응원을 보내주세요!