当我的用户界面打电话给我的班级时,我想触发我的活动,生活:
在我的UI中,我使用字符串参数
调用我的类ScanClassScanMessage scn = new ScanMessage(message);
在我的课程ScanMessage中我做了这个:
public class ScanMessage
{
public delegate void OnScanMessageReceived(string message);
public ScanMessage()
{
}
public ScanMessage(string message)
{
MessageReceived(message);
}
public event OnScanMessageReceived MessageReceived;
}
我在我的FirstViewModel中做了这个
public FirstViewModel()
{
var scanMessage = new ScanMessage();
scanMessage.MessageReceived += ScanMessage_MessageReceived;
}
private void ScanMessage_MessageReceived(string message)
{
//Do something
}
好吧,如果我在这里发帖,那是因为我有问题而我无法帮助解决问题!
感谢。
答案 0 :(得分:1)
原因是retry
的实例不同。 UI类有不同的实例,VM有不同的实例。因此,在其他一个实例上没有听到提起事件的事件。
如果你需要做的所有ScanMessage
都是广播事件,你可以拥有它的单例实例
ScanMessage
然后从UI中你可以调用
public class ScanMessage
{
public delegate void OnScanMessageReceived(string message);
private static ScanMessage _scanMessage = new ScanMessage();
private ScanMessage()
{
}
public static ScanMessage Instance
{
get
{
return _scanMessage;
}
}
public void BroadCastMessage(string message)
{
MessageReceived(message);
}
public event OnScanMessageReceived MessageReceived;
}
在你的虚拟机中你可以
ScanMessage.Instance.BroadCastMessage(message);