2013-03-18 2 views
2

Я получаю эту забавную ошибку, когда я пытаюсь добавить локальную базу данных в мой проект под Windows Phone 8.«System.ComponentModel.INotifyPropertyChanging» в двух местах с переносимыми библиотеками MVVMLight

В 'System.ComponentModel.INotifyPropertyChanging' типа существует в как «E: \ Пользователи \ Кинан \ Documents \ Visual Studio 2012 \ Projects \ MAL.WindowsPhone \ пакеты \ Portable.MvvmLightLibs.4.1.27.1 \ Lib \ КР8 \ GalaSoft.MvvmLight.dll» и 'C: \ Program Files (x86) \ Ссылка сборки \ Microsoft \ Framework \ WindowsPhone \ v8.0 \ System.dll'

Почему System.ComponentModel.INotifyPropertyChanging в библиотеки WP8 пакета MVVM Portable NuGet? Это ошибка, потому что я думаю, что она конфликтует с тем, что уже находится в mscorlib Windows Phone 8.

Пожалуйста, помогите.

+0

Вы проверили совместимость пакета _MVVM light_, который используете? – DHN

+0

Установщик NuGet автоматически определяет, какие библиотеки будут ссылаться в моих различных проектах. Поэтому я вижу, что для моего портативного проекта библиотеки классов он ссылался на сборки из папки «portable-net45 + sl4 + wp71 + win8», и для моего проекта WP8 он ссылался на сборки в папке «wp8». Это заставляет меня думать, что процесс сборки случайно компилирует System.ComponentModel.INotifyPropertyChanging для сборки WP8 и .NET 4.5. С этим, есть ли другой способ проверить совместимость? –

ответ

2

Пожалуйста, попробуйте последнюю версию Portable.MvvmLightLibs (4.1.27.3). Мне пришлось удалить INotifyPropertyChanging из версии PCL, так как нет способа заставить ее работать на разных платформах.

Для этого нам понадобится Microsoft, чтобы обеспечить прокладку (похожую на Microsoft.Bcl), чтобы она правильно подобралась на WP.

Если вам нужны уведомления об изменении свойств (до изменения значения - это очень необычно, и это мало чем используется), одним из вариантов может быть создание собственного интерфейса и реализация его в производном типе из ObservableObject (вы можете переопределить RaisePropertyChanging методы, чтобы знать, когда нужно поднять собственное событие).

Если Microsoft добавит поддержку INotifyPropertyChangning в PCL, я обязательно добавлю его обратно в MVVMLight.

0

Одним простым решением, которое вы можете использовать, является загрузка исходного кода MVVM Light и удаление всех ссылок на INotifyPropertyChanging в ObservableObject. Скомпилируйте библиотеку самостоятельно, и она должна работать отлично.

+0

Я бы с удовольствием, но я не могу найти источник для портативных классов библиотек. Только код для различных платформ. –

+0

Существует вилка MVVM Light с портативными библиотеками классов, включая исходный код: http://mvvmlight.codeplex.com/SourceControl/network/forks/onovotny/MvvmLightPortable –

+0

Спасибо за ссылку. Я загрузил его и вижу, что я могу сделать. Моя первоначальная реакция заключается в изменении пространства имен и повторной компиляции для приложений .NET 4.5, WP8 и Windows Store. Затем в моем проекте WP8 наследуйте от моих моделей взглядов и реализуйте INotifyPropertyChanging из пространства имен System.CompontentModel для каждого ViewModel, который у меня есть. Думаю, вы можете сказать прокси-роды –