2009-08-21 2 views
5

단기적인 해결책으로 WPF 응용 프로그램에 Windows 양식 'usercontrol'을 잼하려고합니다. WPF 응용 프로그램보기에서 프로젝트에 '사용자 지정 Windows 양식 컨트롤'을 추가 할 수 있으며 빈 사용자 지정 컨트롤을 만들 수 있지만이를 추가하는 방법을 알 수는 없습니다. 이상 적으로는 컴파일 된 Windows 폼 사용자 컨트롤에서 .dll을 가져와 WPF 응용 프로그램에 고정 시키거나 사용자 정의 컨트롤을 WPF 응용 프로그램으로 가져 오는 방법을 알고 싶습니다. 는 Windows Forms 응용 프로그램에 대한 수처럼WPF 응용 프로그램에서 사용자 지정 Windows 폼 컨트롤을 넣는 방법?

덕분에, 샘

답변

7

당신은 정말 도구 상자에 컨트롤로 추가 할 수 없습니다. 대신 WPF 응용 프로그램 내부에서 사용자 컨트롤을 "호스팅"해야합니다.

See how to do it on MSDN.

<Window x:Class="Window1" 
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" 
Title="HostingWfInWpf"> 
<Grid> 
    <WindowsFormsHost> 
     <wf:MaskedTextBox x:Name="mtbDate" Mask="00/00/0000"/> 
    </WindowsFormsHost> 
</Grid> 
</Window> 
+0

나는 정확하게이 코드를 시도했고 위에서 언급 한 것과 같은 오류가 발생했습니다. – Shizam

+0

References 폴더에있는'System.Windows.Forms' 어셈블리에 대한 참조를 추가 했습니까? – Kredns

+0

예, 참조 폴더에 추가했습니다. 일부 주변을 둘러보고 연결된 페이지로 돌아와 위 페이지가 XAML 대신 C#을 사용하여 WF 컨트롤을 추가하는 방법을 보여줍니다. WPF 웹 응용 프로그램을 수행 할 때 어떤 이유로 든 XAML을 통해 작동하도록 할 수는 없지만 C#을 통해 수행 할 수 있습니다. http://msdn.microsoft.com/en-us/library/ms751761.aspx – Shizam

3

프로젝트

에 System.Windows.Forms 및 WindowsFormsIntegration에 대한 참조를 추가 : 여기

은 (쉽게 사용자 지정 컨트롤을 사용하여 수정할 수 있습니다) 마스크 텍스트 상자를 사용하는 방법의 예
xmlns:WinForms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
xmlns:WindowsFormsIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" 

그리고 장소 윈도우 창에 호스트를 형성한다.

<WindowsFormsHost Name="wfhDate" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Stretch"> 
       <WinForms:FlowLayoutPanel/> 
    </WindowsFormsHost> 

지금 C# 코드에

using Forms = System.Windows.Forms; 
......................... 
Forms.FlowLayoutPanel flpPanel = this.wfhDate.Child as Forms.FlowLayoutPanel; 
// Initialize your Forms contol here. 
flpPanel.Controls.Add(yourControl); 
+0

@ 루카스 : 위에서 XAML을 정확히 복사했는데 오류없이 컴파일되었으므로 XAML이 제대로 작동하는지 확인하기 위해 C# 코드를 입력하지 않았습니다. 나는 응용 프로그램을 실행하고이 예외로 추락 : System.Windows.Markup.XamlParseException가 처리되지 않은 메시지였다, 버전 = 1.0.0.0을 '페이지 1'어셈블리에 정의 'WpfUploaderTwo의 인스턴스를 만들 수 없습니다, 문화 = 중립, PublicKeyToken = null이 '. 호출 대상에 의해 예외가 발생했습니다. 마크 업 파일 'Page1.xaml'Line 1 Position 7에 오류가 있습니다. – Shizam

+0

WindowsFormsHost 비트를 제거하면 올바르게 작동합니다. 코드 및 오류 링크 : http://bit.ly/aGqfG – Shizam

+0

아, WPF 웹 응용 프로그램이 아니므로 WPF 응용 프로그램이 아닙니다. – Shizam

0

루카스의 대답은 정확하지만 내가 필요로 뭔가를 추가하고 싶었다. 웹 응용 프로그램을 만드는 경우 보안 설정을 완전 신뢰 응용 프로그램으로 변경해야합니다. 이 작업을 수행하기 전에 WindowsFormsHost 컨트롤을 사용할 수 없습니다.

관련 문제