Как наилучшим образом использовать новые функции Type Equivalance для размещения элемента управления MapPoint в приложении WPF

Как наилучшим образом использовать новые функции Type Equivalance для размещения элемента управления MapPoint в приложении WPF.

Это связано с моим другим вопросом о том, что влечет за собой поддержание взаимодействия сборок в отношении новых функций NoPIA и Type Equivalance. Но теперь я заинтересован в том, чтобы на самом деле получить работающую реализацию, чтобы показать, как это можно использовать в отношении элемента управления ActiveX элемента управления MapPoint.

Мне удалось последовать совету о том, что для параметра " Вставить типы взаимодействия" в Visual Studio установлено значение "Истина" для моей ссылки на MapPoint, и я могу скомпилировать и выполнить код, подобный следующему, в моем приложении WPF, которое интересно обрабатывает MapPoint.MappointControl интерфейс, как будто у него есть конструктор.

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var map = new MapPoint.MappointControl();

    if (map.ActiveMap == null)
    {
        map.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);
    }
}

Этот код, кажется, работает, поэтому я предполагаю, что все COM-вызовы происходят должным образом, но проблема заключается в том, что этот элемент управления ActiveX интегрирован в иерархию элементов управления для моего окна. При использовании более старых методологий ActiveX Introp из Windows Forms у меня обычно был бы сгенерированный узел элемента управления ActiveX, который представляет мой элемент управления ActiveX, но также является элементом управления Windows Forms, который позволял мне размещать его в форме или в WindowsFormsHost в приложении WPF., Исходя из моих исследований, похоже, что я могу разместить элемент управления MapPoint непосредственно в WPF, создав класс, унаследованный от класса HwndHost. Однако, похоже, что может потребоваться много работы, чтобы дублировать методологию Windows Forms, которая использовалась для создания в сборке взаимодействия бесплатно. Я предполагал, что с новыми функциями эквивалентности типов мы сможем не только создавать экземпляры элементов управления, но и без особых проблем интегрировать эти элементы управления непосредственно в WPF или приложение Windows Forms.

Я что-то пропустил? Если нет, то каков наиболее разумный способ использования элемента управления MapPoint в приложении WPF? Я надеюсь, что ответ не в том, чтобы Visual Studio или утилита TlbImp.exe генерировали старые сборки взаимодействия, которые мы использовали при разработке Windows Forms.

Кстати, я нашел некоторые подробности о различных методах импорта библиотеки типов, но я не совсем понимаю, как это может применяться в моей ситуации.

1 ответ

Я не использовал MapPoint с WPF, но я думаю, что вы должны использовать tblimp.exe для MapPoint 2006 (и более ранних версий) только вручную. Я понимаю, что все автоматизировано для MapPoint 2009, 2010 и, возможно, MapPoint 2011, когда он будет выпущен.

Другие вопросы по тегам