2010-06-22 2 views
3

새 Type Equivalance 기능을 활용하여 WPF 응용 프로그램에서 MapPoint 컨트롤을 호스팅하는 방법새 Type Equivalance 기능을 사용하여 WPF 응용 프로그램에서 MapPoint 컨트롤을 호스팅하는 방법

이것은 새로운 NoPIA 및 유형 등가성 기능과 관련하여 maintaining interop assembleis까지 수반되는 것에 관한 저의 다른 질문과 관련이 있습니다. 하지만 이제는 실제 구현을 통해 MapPoint Control ActiveX 컨트롤과 관련하여 이것이 어떻게 사용되는지 보여주기에 관심이 있습니다.

Visual Studio에서 옵션을 내포하는 것이 내 MapPoint 참조에 대해 True로 설정되어 있고 내 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 호출이 모든 장면 뒤에 제대로 일어나고 있지만, 문제는 내 창에 대한 제어 heirarcy에 통합이 ActiveX 컨트롤을 받고있다 같은데요 작동하는 것 같다. Windows Forms에서 이전 ActiveX 읶 트롭 방법을 사용 핛 때 일반적으로 ActiveX 컨트롤을 나타내는 ActiveX 컨트롤 호스트가 생성되었지만 폼 내에서 또는 WPF 응용 프로그램의 WindowsFormsHost 내에서 호스트하도록 허용 된 Windows Forms 컨트롤이기도합니다 . 지금까지의 연구 결과에 따르면 클래스에서 상속받은 클래스를 생성하여 host the MapPoint Control directly in WPF 수 있습니다. 그러나 이것은 Windows Forms 방법론이 무료로 interop 어셈블리 내에서 생성하는 데 사용 된 것을 복제하는 많은 작업 일 수 있습니다. 내 가정은 새로운 유형 동등성 기능을 통해 컨트롤을 인스턴스화 할 수있을뿐만 아니라 이러한 컨트롤을 WPF 또는 Windows Forms 응용 프로그램 내에서 직접적으로 통합 할 수 있다는 점입니다.

내가 누락 된 항목이 있습니까? WPF 앱에서 MapPoint 컨트롤을 사용하는 가장 좋은 방법은 무엇입니까? 대답은 Visual Studio를 가지고 있지 않거나 TlbImp.exe 유틸리티가 Windows Forms 개발에서 사용했던 이전 interop 어셈블리를 생성하지 않기를 바랍니다.

덧붙여서 importing a type library의 여러 가지 방법에 대한 세부 정보를 찾았지만 내 상황에 어떻게 적용될 수 있는지 잘 모르겠습니다.

답변

0

MapPoint를 WPF와 함께 사용하지는 않았지만 MapPoint 2006 (및 그 이전 버전)의 경우 tblimp.exe 만 수동으로 사용해야한다고 생각합니다. MapPoint 2009, 2010 및 아마도 MapPoint 2011이 출시 될 때마다 모든 것이 자동화 된 것으로 알고 있습니다.

+0

자동으로 Visual Studio가 TblImp.exe 유틸리티의 동작을 자동으로 수행한다는 의미입니까? 그렇지 않으면 생성 된 interop dll을 관리하는 것과 관련이없는 다른 방법이있을 경우 해당 주제에 대한 일부 리소스를 가리킬 수 있다면 우수 할 것입니다. – jpierson

관련 문제