如何将模型信息传递给主窗口中的用户控件视图模型



我正在尝试学习MVVM模式,用WPF做一个简单的GUI。这只是一个简单的Autocad插件,它有一个显示模型信息的模式窗口。

我有两个用户控件,它们分别具有视图和视图模型。我在一个窗口/对话框中显示这些用户控件。其中一个用户控件需要显示一些信息,表示DataGrid中的一个简单列表(模型(。

正如我之前所说,该用户控件的模型是一个现有的List。我需要将列表信息传递给视图模型,但我很难做到这一点。我想把它作为一个参数传递给MainWindow构造函数,然后再传递给相应的视图模型,但这听起来不是一个好主意。

在这种情况下,我有什么选择?

我正在使用MVVM工具包。

谢谢!

您可以使用WeakReferenceMessenger/StrongReferenceMessenger将消息从一个视图模型发送到另一个:

// Create a message
public class LoggedInUserChangedMessage : ValueChangedMessage<User>
{
public LoggedInUserChangedMessage(User user) : base(user)
{
}
}
// Register a message in some module
WeakReferenceMessenger.Default.Register<LoggedInUserChangedMessage>(this, (r, m) =>
{
// Handle the message here, with r being the recipient and m being the
// input message. Using the recipient passed as input makes it so that
// the lambda expression doesn't capture "this", improving performance.
});
// Send a message from some other module
WeakReferenceMessenger.Default.Send(new LoggedInUserChangedMessage(user));

有关详细信息,请参阅文档。

相关内容

  • 没有找到相关文章

最新更新