如何将WinForm用户控件添加到WPF中,以便我可以在xaml.cs文件中引用它

Pau*_*l H 6 c# wpf user-controls visual-studio-2010 winforms

我正在将WinForms项目的一部分迁移到WPF中.

我想将现有的WinForms用户控件添加到WPF表单中.WinForm用户控件称为"TicketPrinter",与WPF表单位于同一项目中.

在我的xaml中,我有这一行:

xmlns:Printers="clr-namespace:Project.UserControls.Printers"
Run Code Online (Sandbox Code Playgroud)

然后我在我的xaml中使用它:

        <WindowsFormsHost Height="430" HorizontalAlignment="Left" Margin="468,12,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="324">
            <Printers:TicketPrinter Printers:Name="ZapTicketPrinter">
            </Printers:TicketPrinter>
        </WindowsFormsHost> 
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

当我运行项目时,用户控件将按预期显示在窗体上.

但是当我进入xaml.cs文件后面的代码并尝试访问"ZapTicketPrinter"时,它不能作为参考.

我尝试使用ZapTicketPrinter并且无法识别.

我也尝试过以下方法:

TicketPrinter ticketPrinter = this.FindName("ZapTicketPrinter") as TicketPrinter;
Run Code Online (Sandbox Code Playgroud)

但得到一个空

我错过了什么?如何在代码中引用该名称?

JSJ*_*JSJ 10

提供x:名称而不是printer:name

<WindowsFormsHost>
    <Printers:TicketPrinter x:Name="ZapTicketPrinter"/>
</WindowsFormsHost>
Run Code Online (Sandbox Code Playgroud)

MSDN示例

使用
http://msdn.microsoft.com/en-us/library/ms751761.aspx背后的代码
演练:在WPF中托管Windows窗体控件

使用xaml
http://msdn.microsoft.com/en-us/library/ms742875.aspx
演练:使用XAML在WPF中托管Windows窗体控件