다른 Region 둘을 상호작용하게 하는 메세지 만들기
참고 : https://documentation.devexpress.com/WPF/17474/MVVM-Framework/Messenger
형태
A Region(발신자) => B Region(수신자) 로 메세지를 전송하여 B가 행동하게 하는 방법입니다
1. 메세지 형태를 정의합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/// <summary>
/// TopReport Region에 상호작용 하는 메세지를 보내는 형식
/// </summary>
public class TopReportRegionMessage
{
/// <summary>
/// 메세지 종류
/// </summary>
public enum Messagetype { SelectItem, DeleteItem, ModifyItem , AddItem, ChangeTree }
public Messagetype messagetype;
public object RecordID { get; private set; }
public TopReportRegionMessage(object recordID, Messagetype _messageType)
{
RecordID = recordID;
messagetype = _messageType;
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs |
2. 메세지를 수신할 B Region 에 수신 함수를 만들어 줍니다
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
31
32
33
34
|
public void OnMessage(TopReportRegionMessage message)
{
switch (message.messagetype)
{
case TopReportRegionMessage.Messagetype.AddItem:
{
}
break;
case TopReportRegionMessage.Messagetype.SelectItem:
{
}
break;
case TopReportRegionMessage.Messagetype.DeleteItem:
{
}
break;
case TopReportRegionMessage.Messagetype.ModifyItem:
{
}
break;
case TopReportRegionMessage.Messagetype.ChangeTree:
{
//MessageBox.Show("CLM_TopReport ChangeTree 그러니까 리포트 내용 바꾸세요 param :"+ (string)(message.RecordID));
}
break;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs |
3. 만든 OnMessage 함수를 이제 Messenger.Default에 등록해봅시다.
1
2
3
4
|
private void InitMessage()
{
Messenger.Default.Register<TopReportRegionMessage>(this, OnMessage); //Message Manager에 현재 클래스가 TopReportRegionMessage를 수신 할 수 있다! 라고 등록하는 코드
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs |
4. 메세지를 전송할 코드를 만들어줍시다. Region A에 작성
1
|
Messenger.Default.Send(new TopReportRegionMessage("dddd",TopReportRegionMessage.Messagetype.ChangeTree));
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs |
Messenger는 DevExpress에서 기본적으로 지원해주는 클래스입니다.
using DevExpress.Mvvm; 을 선언해주시면 사용 하실 수 있습니다.
- 설명
실제로 메세지를 RegionA가 B로 전송하는 것은 아닙니다. 중간에 Messenger라는 클래스가 존재하고 있어 받은 메세지를 올바른 목적지로 전송하는 형태를 취하고 있죠
즉 RegionA는 Messenger라는 클래스에 메세지를 보내고
Messenger는 해당 메세지 형태에 바인딩된 함수를 실행시키고 메세지의 파라미터를 함수로 넘겨줍니다.
이 과정 전에 수신 region B는 미리 Messenger에 특정 메세지 형태에 자신의 함수를 바인딩해야 할 필요가 있습니다.
'중단한 프로젝트 > WPF_DevExpress를 이용한 Mvvm' 카테고리의 다른 글
DXBinding을 이용한콘텍스트 메뉴에 아이콘과 이름 그리고 이벤트를 바인딩하는 방법 (0) | 2019.04.17 |
---|---|
dxg:GridControl 에서 ComboBox를 twoWay로 바인딩하는 방법 (0) | 2019.03.25 |
dxg:GridControl 에서 xaml에 컬럼 설정 안하고 컬럼 이름 지정하는 방법 (0) | 2019.03.22 |
<dxg:GridColumn 각 cell 마다 글자와 체크박스가 나오게 하는 방법 (0) | 2019.03.19 |
dxprg:PropertyGridControl 사용 방법/ Tree아이템에 클릭시 반응하게 하는 방법 (0) | 2019.03.18 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.