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

标签 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 应用程序中,我仍然有 ViewModel(因为 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 的最新版本。我是否需要降级软件包以获得相同的内部版本号、手动添加库或者我可以做什么才能使其工作?

提前致谢!

最佳答案

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

关于c# - 如何让 MVVM Light Messenger 与 PCL 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21993994/

相关文章:

c# - 在具有相同签名的.Net 3.5 中实现 Expression.Assign?

javascript - 如何在javascript函数中获取模型值并将其传递给 Controller ​​?

xaml - 在 XAML 中设置 TextBox/PasswordBox 的样式

windows-phone-8 - 如何将 x86 包部署到 Windows Phone 设备?

c# - 'system.argumentexception' 上传多部分时

c# - 在 C# 中,如何确定一个列表是否包含另一个列表中的任何项目?

android - 在响应式 CSS 中使用系统字体

windows-phone-8 - Windows Phone 8 AdControl AdException?

javascript - Windows Phone 网络浏览器 : right way to get document height

C#类型转换不一致?