-
Notifications
You must be signed in to change notification settings - Fork 364
Open
Labels
bug 🐛An unexpected issue that highlights incorrect behaviorAn unexpected issue that highlights incorrect behavior
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
1.Condition
Framework: .Net 6 WPF
IDE: VisualStudio Professional 17.4.2;
Language: C#
2.Code
The C# Code:
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
[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";
}
}
/// <summary>
/// 用于SendingMessage的信息类
/// </summary>
/// <typeparam name="T">该类承载的信息类型</typeparam>
public sealed class SendingMessageCarrier<T> : ValueChangedMessage<T>
{
public SendingMessageCarrier(T value) : base(value)
{
}
}
public class UserSenderViewModel : ObservableRecipient
{
public string MyString { get; set; } = "wxy";
public void SendUserMessage()
{
var carrier = new SendingMessageCarrier<string>(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<UserReceiverViewModel, SendingMessageCarrier<string>>(this, MessageHandler);
//WeakReferenceMessenger.Default.Register<UserReceiverViewModel, SendingMessageCarrier<string>>(this, MessageHandler);
//WeakReferenceMessenger.Default.Register<UserReceiverViewModel, SendingMessageCarrier<string>, int>(this, 12, MessageHandler);
}
private void MessageHandler(UserReceiverViewModel recipient, SendingMessageCarrier<string> message)
{
recipient.MyStringReceive = message.Value;
}
}
The XAML Code
```xaml
<Window x:Class="LearnMessenger.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:LearnMessenger"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="385" FontSize="18" IsReadOnly="True" Height="207"/>
<TextBox x:Name="tb_Show" Margin="400,10,10,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="18" IsReadOnly="True" Height="207"/>
<Button x:Name="btn_SendMes" Click="Btn_SendMes_Click" Content="SendMessage" HorizontalAlignment="Left" Margin="24,365,0,0" VerticalAlignment="Top" Height="46" Width="143"/>
</Grid>
</Window>
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
Metadata
Metadata
Assignees
Labels
bug 🐛An unexpected issue that highlights incorrect behaviorAn unexpected issue that highlights incorrect behavior
