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

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

꼬예 2022. 7. 5.

 

 

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

 

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

 

 

 

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

 

 

//MainWindow.xaml

 

 

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

 

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

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

 

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

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

 

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

 

//MessageCommand.cs

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

 

 

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

 

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

 

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

 

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

왜일까요?

 

 

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

 

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

 

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

 

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

 

//MessageViewModel.cs

 

 

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

 

output:

 

 

 

 

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

댓글