2012-08-26 6 views
1

간단한 WPF 응용 프로그램에서 winforms를 사용하는 MonthCalendar 컨트롤을 사용하려고합니다. WindowsFormsHost를 사용하여 wpf 응용 프로그램에서 winforms 컨트롤을 사용할 수 있다는 것을 알았습니다. WinForm의 기본 제공 컨트롤을 위해 작동하지만이 컨트롤의 MonthCalendar 개체를 인스턴스화하려고하면 "MonthCalendar 개체를 인스턴스화 할 수 없습니다."라는 오류가 발생합니다.wpf 응용 프로그램에서 winforms 컨트롤을 사용하려고합니다.

왜 이런 일이 벌어지고 있으며이를 극복하는 방법에 대한 제안이 있으십니까? MonthCalendar를위한 소스 코드 http://www.codeproject.com/Articles/10840/Another-Month-Calendar?msg=2298161#xx2298161xx

임에서 확인할 수있다 XAML에서 인스턴스화 :

<Window x:Class="MonthCalendarTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
    xmlns:pc="clr-namespace:Pabo.Calendar" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid Height="65" Width="280"> 

    <WindowsFormsHost Margin="0,0,12,12" Height="100"> 
     <pc:MonthCalendar></pc:MonthCalendar> 

    </WindowsFormsHost> 
</Grid> 

+0

코드 또는 xaml에서 어떻게 인스턴스화합니까? 그 코드라면 어쩌면 그 코드를 질문에 추가 할 수 있습니다. – Surfbutler

+0

죄송합니다. 언급을 잊어 버렸습니다. Im xaml에서 인스턴스화했습니다. 제 수정 된 게시물을 참조하십시오. – user1340852

+0

'MonthCalendar'에는 매개 변수없는 생성자가 있습니까? –

답변

2

내가 다음 단계에 따라 작업을 얻을 수 있습니다 : 시각 사용

  • 을 Studio 2010
  • 새로운 WPF 응용 프로그램 만들기

  • http://www.codeproject.com/KB/selection/MonthCalendar/MonthCalendar_src_vs2005.zip

  • 추출물 MonthCalendar를하고, 추가 : "닷넷 프레임 워크 4"(NOT 클라이언트 프로파일)
  • 는 System.Windows.Forms에 대한 참조를 추가하고 WindowsFormIntegration

  • 다운로드 MonthCalendar를 제품들에

  • 변경 플랫폼 기존 프로젝트로 솔루션
  • MonthCalendar 플랫폼을 ".Net Framework 4"(클라이언트 프로필 아님)로 변경
  • System.Design 참조를 삭제하고 다시 추가하면 사용자가 Ê 2 WPF 응용 프로그램에서 .NET 4 일
  • 네임 스페이스 참조 XMLNS를 사용 MonthCalendar를 프로젝트에 참조를 추가 : PC = "CLR-네임 스페이스를 : Pabo.Calendar, 조립 = MonthCalendar를"을
XAML에 그래서

enter image description here

<Window x:Class="WpfApplication6.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
     xmlns:pc="clr-namespace:Pabo.Calendar;assembly=MonthCalendar" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid Height="65" Width="280"> 
     <WindowsFormsHost Margin="0,0,12,12" Height="100"> 
      <pc:MonthCalendar x:Name="myCalendar"/> 
     </WindowsFormsHost> 
    </Grid> 
</Window> 

당신은 다르게 뭐하는거야?

자신의 프로젝트에 MonthCalendar를 유지 했습니까?

실행중인 OS 플랫폼은 무엇입니까?

+0

+1 : 고마워요! 나는 당신의 발걸음을 정확히 따라 갔다. – user1340852

+0

또 다른 질문이 있습니다. 코드 뒤에 이름을 어떻게 사용합니까? 이 속성을 MonthCalendar에 이름 속성으로 추가하면 xaml.cs 파일이 'myCalendar'를 인식하지 못하는 것 같습니다. myWinFormsHost.Child를 MonthCalendar에 캐스팅하고 MonthCalendar의 다른 객체에 할당하면 빨간색의 삐걱 거리는 소리가 사라집니다. 이것이 올바른 방법일까요? – user1340852

+0

Name = 또는 x : Name =? .... x : Name을 사용 했습니까? –

관련 문제