多次出现 MVVM Light Message Notification
MVVM Light Message Notification occurs multiple times
我正在使用 MVVM Light 并使用 Messages 在 ViewModel 之间进行通信,让 view.xaml.cs 知道何时可以执行某些操作。我的问题是我注册了一条消息,然后它多次收到它,但第一次它只注册并收到一次。因此,为了防止我的程序多次执行某项操作,我必须创建布尔标志以查看它是否已被接收但它也无法正常工作,有没有解决这个问题的想法?
在ViewModel.cs
Messenger.Default.Send(new NotificationMessage("NewNameAlreadyExists"));
在View.xaml.cs
public View()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage>(this, NotificationMessageReceived);
}
private void NotificationMessageReceived(NotificationMessage msg)
{
switch (msg.Notification)
{
case "NewNameAlreadyExists":
MessageBox.Show(Properties.Resources.CopyGipsTemplateViewModel_NewNameAlreadyExists,
Title, MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
default:
break;
}
}
您正在视图的构造函数中注册消息。
这意味着每次构建视图时都会收到一条新消息注册,从而导致第一次访问页面时它工作正常,但之后就不行了。
如果您在消息注册上设置断点,您将能够确认是否属于这种情况。
这可以通过移动您的消息注册、用布尔标志包装您的注册或在适当的时候调用 Message.Default.Unregister 来解决。
我正在使用 MVVM Light 并使用 Messages 在 ViewModel 之间进行通信,让 view.xaml.cs 知道何时可以执行某些操作。我的问题是我注册了一条消息,然后它多次收到它,但第一次它只注册并收到一次。因此,为了防止我的程序多次执行某项操作,我必须创建布尔标志以查看它是否已被接收但它也无法正常工作,有没有解决这个问题的想法?
在ViewModel.cs
Messenger.Default.Send(new NotificationMessage("NewNameAlreadyExists"));
在View.xaml.cs
public View()
{
InitializeComponent();
Messenger.Default.Register<NotificationMessage>(this, NotificationMessageReceived);
}
private void NotificationMessageReceived(NotificationMessage msg)
{
switch (msg.Notification)
{
case "NewNameAlreadyExists":
MessageBox.Show(Properties.Resources.CopyGipsTemplateViewModel_NewNameAlreadyExists,
Title, MessageBoxButton.OK, MessageBoxImage.Exclamation);
break;
default:
break;
}
}
您正在视图的构造函数中注册消息。 这意味着每次构建视图时都会收到一条新消息注册,从而导致第一次访问页面时它工作正常,但之后就不行了。 如果您在消息注册上设置断点,您将能够确认是否属于这种情况。
这可以通过移动您的消息注册、用布尔标志包装您的注册或在适当的时候调用 Message.Default.Unregister 来解决。