CommunityToolkit / CommunityToolkit/dotnet
The Messenger can't send Message by using the official sample from "MVVM Toolkit Sample App" software
- Dominant language
- C#
- Stars
- 3.8k
- Forks
- 400
- PR merge metrics
- No merged PRs in 30d
Description
### Describe the bug
When I learn the Messenger part of CommunityToolkit.Mvvm by following the official sample from "MVVM Toolkit Sample App" software, I find that the sample code doesn't work when I use them in my program.


### Regression
_No response_
### Steps to reproduce
```text
1.Condition
Framework: .Net 6 WPF
IDE: VisualStudio Professional 17.4.2;
Language: C#
2.Code
The C# Code:
///
/// Interaction logic for MainWindow.xaml
///
[ObservableObject]
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//UserReceiver = new UserReceiverViewModel();
//UserSender = new UserSenderViewModel();
}
public UserReceiverViewModel UserReceiver { get; } = new();
public UserSenderViewModel UserSender { get; } = new();
private void Btn_SendMes_Click(object sender, RoutedEventArgs e)
{
UserSender.SendUserMessage();
tb_Show.Text += "信息已发送\n";
tb_Show.Text += $"接收的信息:{UserReceiver.MyStringReceive}\n";
}
}
///
/// 用于SendingMessage的信息类
///
/// 该类承载的信息类型
public sealed class SendingMessageCarrier : ValueChangedMessage
{
public SendingMessageCarrier(T value) : base(value)
{
}
}
public class UserSenderViewModel : ObservableRecipient
{
public string MyString { get; set; } = "wxy";
public void SendUserMessage()
{
var carrier = new SendingMessageCarrier(MyString);
Messenger.Send(carrier);
//WeakReferenceMessenger.Default.Send(carrier);
//WeakReferenceMessenger.Default.Send(carrier, 12);
if (MyString == "wxy")
{
MyString = "zbk";
}
else
{
MyString = "wxy";
}
}
}
public class UserReceiverViewModel : ObservableRecipient
{
public string MyStringReceive { get; set; } = string.Empty;
protected override void OnActivated()
{
//base.OnActivated();
Messenger.Register>(this, MessageHandler);
//WeakReferenceMessenger.Default.Register>(this, MessageHandler);
//WeakReferenceMessenger.Default.Register, int>(this, 12, MessageHandler);
}
private void MessageHandler(UserReceiverViewModel recipient, SendingMessageCarrier message)
{
recipient.MyStringReceive = message.Value;
}
}
The XAML Code
```xaml
```
3.Click on Button Control(active the method )
4.the UserReceiverViewModel instance cann't receive message from UserSenderViewModel instance.
```
### Expected behavior
I want to know why the code doesn't work and tell me how to fix it.
### Screenshots
_No response_
### IDE and version
VS 2022
### IDE version
17.4.2
### Nuget packages
- [ ] CommunityToolkit.Common
- [ ] CommunityToolkit.Diagnostics
- [ ] CommunityToolkit.HighPerformance
- [X] CommunityToolkit.Mvvm (aka MVVM Toolkit)
### Nuget package version(s)
8.0.0
### Additional context
_No response_
### Help us help you
Yes, I'd like to be assigned to work on this item
Contributor guide
Assessment
This issue has not been assessed yet.