InvalidCastException с целью общего доступа в Windows 8

м экспериментирую с Windows 8 "Metro Styled Apps », MVVM Свет и хотите создать цель для обмена - пока все хорошо. Но если яЯ в методе OnShareTargetActivation и хочу добавить элемент в коллекцию ObservableCollection. Я ловлю исключение InvalidCastException между типом класса и объектом COM.

Das COM-Objekt des Typs "System.Collections.Specialized.NotifyCollectionChangedEventHandler» Канн Нихт в ден Классентип "System.Collections.Specialized.NotifyCollectionChangedEventHandler» Умгевандельт Верден Instanzen von Typen, die COM-Komponenten repräSentieren, Können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möбезукоризненно, безукоризненно, без сомнения COM-Komponente QueryInterface-Aufrufe füIID der Schnittstelle unterstüTZT.

Английская версия:

Невозможно привести COM-объект типа 'System.Collections.Specialized.NotifyCollectionChangedEventHandler» к типу класса "System.Collections.Specialized.NotifyCollectionChangedEventHandler», Экземпляры типов, которые представляют компоненты COM, не могут быть преобразованы в типы, которые не представляют компоненты COM; однако они могут быть преобразованы в интерфейсы, если базовый компонент COM поддерживает вызовы QueryInterface для IID интерфейса.

Теперь я немного смущен и нене знаю, как правильно обращаться с этим поведением.

MainViewModel main1 = new ViewModelLocator().Main;
MainViewModel main2 = new MainViewModel();
var conversation = new ConversationViewModel();
conversation.Messages.Add(new MessageViewModel { Image = img, Text = "Share" });
main1.Conversations.Add(conversation); // error InvalidCastException 
main2.Conversations.Add(conversation); // no error

кудаimg это недавно созданный BitmapImage

ViewModelLocator

public class ViewModelLocator
{
    /// 
    /// Initializes a new instance of the ViewModelLocator class.
    /// 
    public ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        SimpleIoc.Default.Register();
        SimpleIoc.Default.Register();
        SimpleIoc.Default.Register();
    }

    public MainViewModel Main
    {
        get
        {
            return ServiceLocator.Current.GetInstance();
        }
    }

    //...
}

Трассировки стека:

at System.StubHelpers.StubHelpers.GetCOMIPFromRCW_WinRTDelegate (Объект objSrc, IntPtr pCPCMD, IntPtr & ppTarget)

в System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke (Отправитель объекта, NotifyCollectionChangedEventArgs e)

в System.Collections.ObjectModel.ObservableCollection1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)<br><br>at System.Collections.ObjectModel.ObservableCollection1.InsertItem (индекс Int32, элемент T) в System.Collections.ObjectModel.Collection`1.Add (элемент T)

Ответы на вопрос(1)

Ваш ответ на вопрос