是否有一种简单的方法可以打印所有Messenger.Default.Send()进行调试?不想覆盖它们。
答案 0 :(得分:1)
在每个人都从中继承的抽象ViewModel中创建一个函数,该函数使用一个define或全局变量来确定它是否同样调试。如果您正在以调试或发布方式运行,也可能是这样。
public abstract BaseViewModel
public SendMessage()
{
if(DEBUG) // The global variable, or definition, or current run type - whatever
Debug.WriteLine();
// else // Commented if you want to always send, uncomment if you want to send instead.
Messenger.Default.Send();
}
public RealViewModel : BaseViewModel
...
SomeMethod()
{
...
base.SendMessage();
答案 1 :(得分:1)
是的,所以我最终得到了自己的Messenger包装器。没有聪明的解决方案,只需简单的包装。万一,其他任何人都需要它:
public static class MvvmLightMessenger
{
public static void Register<TMessage>(object recipient, Action<TMessage> action)
{
Messenger.Default.Register(recipient,action);
}
public static void Register<TMessage>(object recipient, bool receiveDerivedMessagesToo, Action<TMessage> action)
{
Messenger.Default.Register(recipient, receiveDerivedMessagesToo, action);
}
public static void Register<TMessage>(object recipient, object token, Action<TMessage> action)
{
Messenger.Default.Register(recipient, token, action);
}
public static void Register<TMessage>(object recipient, object token, bool receiveDerivedMessagesToo, Action<TMessage> action)
{
Messenger.Default.Register(recipient, token, receiveDerivedMessagesToo, action);
}
public static void Send<TMessage>(TMessage message)
{
Debug.WriteLine("{!} Message: " + message);
Messenger.Default.Send<TMessage>(message);
}
public static void Send<TMessage, TTarget>(TMessage message)
{
Debug.WriteLine("{!} Message: " + message + " to target: " + typeof(TTarget));
Messenger.Default.Send<TMessage, TTarget>(message);
}
public static void Send<TMessage>(TMessage message, object token)
{
Debug.WriteLine("{!} Message: " + message + " token: " + token);
Messenger.Default.Send<TMessage>(message, token);
}
public static void Unregister<TMessage>(object recipient)
{
Messenger.Default.Unregister<TMessage>(recipient);
}
public static void Unregister<TMessage>(object recipient, Action<TMessage> action)
{
Messenger.Default.Unregister<TMessage>(recipient, action);
}
public static void Unregister<TMessage>(object recipient, object token)
{
Messenger.Default.Unregister<TMessage>(recipient, token);
}
public static void Unregister<TMessage>(object recipient, object token, Action<TMessage> action)
{
Messenger.Default.Unregister<TMessage>(recipient, token, action);
}
}