❔ unable to send messages using MVVMtoolkit messenger
i am trying to pass messages between two viewmodels
employeeviewmode
and storeviewmode
but it doesn't work
public class StoreViewModel :BaseViewModel
{
public ICommand NavigateEmployeeCommand { get; }
public StoreViewModel(INavigation storeNav)
{
NavigateEmployeeCommand = new NavigateCommand(storeNav);
}
protected override void OnActivated()
{
Messenger.Register<StoreViewModel, MonthNameMessage>(this, (r, m) => r.MonthMessageReceived= m.Value
);
}
private string _monthMessageReceived;
public string MonthMessageReceived { get => _monthMessageReceived;
set => SetProperty(ref _monthMessageReceived, value); }
}
//employee viemodel
public class EmployeeViewModel:BaseViewModel
{
public ICommand NavigateStoreCommand { get; }
public ICommand SendMessageCommand { get; }
public EmployeeViewModel(INavigation storeNav)
{
NavigateStoreCommand = new NavigateCommand(storeNav);
SendMessageCommand= new RelayCommand(SendMessage);
}
private readonly string _testVariable = "Employee haahahah";
public string TestVariable
{
get => _testVariable;
}
protected override void OnActivated()
{
Messenger.Register<EmployeeViewModel, CurrentMonthRequestMessage>(this, (r,m)=> m.Reply(r._testVariable));
}
public void SendMessage()
{
Messenger.Send(new MonthNameMessage(_testVariable));
}
}
//Message classes
public sealed class MonthNameMessage : ValueChangedMessage<string>
{
public MonthNameMessage(string value) : base(value)
{
}
}
public sealed class CurrentMonthRequestMessage:RequestMessage<string>
{
}
public class StoreViewModel :BaseViewModel
{
public ICommand NavigateEmployeeCommand { get; }
public StoreViewModel(INavigation storeNav)
{
NavigateEmployeeCommand = new NavigateCommand(storeNav);
}
protected override void OnActivated()
{
Messenger.Register<StoreViewModel, MonthNameMessage>(this, (r, m) => r.MonthMessageReceived= m.Value
);
}
private string _monthMessageReceived;
public string MonthMessageReceived { get => _monthMessageReceived;
set => SetProperty(ref _monthMessageReceived, value); }
}
//employee viemodel
public class EmployeeViewModel:BaseViewModel
{
public ICommand NavigateStoreCommand { get; }
public ICommand SendMessageCommand { get; }
public EmployeeViewModel(INavigation storeNav)
{
NavigateStoreCommand = new NavigateCommand(storeNav);
SendMessageCommand= new RelayCommand(SendMessage);
}
private readonly string _testVariable = "Employee haahahah";
public string TestVariable
{
get => _testVariable;
}
protected override void OnActivated()
{
Messenger.Register<EmployeeViewModel, CurrentMonthRequestMessage>(this, (r,m)=> m.Reply(r._testVariable));
}
public void SendMessage()
{
Messenger.Send(new MonthNameMessage(_testVariable));
}
}
//Message classes
public sealed class MonthNameMessage : ValueChangedMessage<string>
{
public MonthNameMessage(string value) : base(value)
{
}
}
public sealed class CurrentMonthRequestMessage:RequestMessage<string>
{
}
1 Reply
Looks like nothing has happened here. I will mark this as stale and this post will be archived until there is new activity.