Wpf 注册MVVM消息时如何标记viewmodels?

Wpf 注册MVVM消息时如何标记viewmodels?,wpf,xaml,mvvm,mvvm-light,Wpf,Xaml,Mvvm,Mvvm Light,使用MVVM Light,可以轻松注册特定类型的消息: public MyViewModel() { Messaging.Messenger.Default.Register<MyObject>(this, new Action<MyObject>((o) => DataMember = o)); } 。。。实际上给了我同样的问题。我在哪里指定这个“1234”值?我读过,希望它能让我在XAML中指定构造函数参数,但它似乎只在Loose XA

使用MVVM Light,可以轻松注册特定类型的消息:

public MyViewModel()
{
    Messaging.Messenger.Default.Register<MyObject>(this,
        new Action<MyObject>((o) => DataMember = o));
}
。。。实际上给了我同样的问题。我在哪里指定这个“1234”值?我读过,希望它能让我在
XAML
中指定构造函数参数,但它似乎只在
Loose XAML
中受支持:(


我可以想出几个解决方案,比如在实例化viewmodel时使用全局变量
ActiveDocumentID
。有更好的解决方案吗?

为什么不使用
GUID
而不是字符串作为文档Id?将其设置为
new GUID()
应该自动为每个ViewModel生成一个唯一的Id,而无需您定义它是的,但在发送消息时,这些GUID必须是已知的。此外,视图中也可能接收到消息。因此,必须使用已知的令牌。
public MyViewModel(String documentID)
{
    Messaging.Messenger.Default.Register<MyObject>(this,
        documentID,
        new Action<MyObject>((o) => DataMember = o));
}
public MyView()
{
    InitializeComponent();
    DataContext = new MyViewModel("1234");
}