如何让MVVM Light Messenger与PCL配合使用

时间:2014-02-24 16:56:26

标签: c# windows-phone-8 windows-phone mvvm-light portable-class-library

我目前正在重新组织我的WP8项目,以便拥有一个可移植类库,这可能会产生一个W8应用程序。

我正在使用MVVMLight并拥有以下代码:

在便携式类库中:

namespace MyApp.Shared.Messages
{
    public class MyItemSelectedMessage : MessageBase
    {
        public MyItemSelectedMessage(MyItem item)
        {
            Item = item;
        }
        public MyItem Item { get; set; }
    }
}

在我的WP8应用程序中,我仍然有ViewModels(因为Telerik和其他一些我无法外包给PCL的东西),我使用以下代码注册消息:

Messenger.Default.Register<MyItemSelectedMessage>(this, msg => SelectedItem = msg.Item);

代码工作正常,但现在VS在给定行的WP8应用程序中给出了以下错误:

The type 'GalaSoft.MvvmLight.Messaging.MessageBase' is defined in an assembly that is not referenced. You must add a reference to assembly 'GalaSoft.MvvmLight, Version=4.2.30.16997, Culture=neutral, PublicKeyToken=null'

在我的WP8项目中,我安装了MvvmLight(v4.2.30.23483),在我的PCL中有用于PCL的MvvmLight库(v4.2.30.16997),这两个库都是Nuget的最新版本。我是否需要降级软件包才能获得相同的内部版本号,手动添加库或我可以做些什么才能使其正常工作?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您应该从两个项目中引用Portable.MvvmLightLibs NuGet包,而不是任何非可移植的MvvmLight包。 Portable.MvvmLightLibs包包括对PCL和特定于平台的库的支持。