我正在将WinForms项目的一部分迁移到
WPF中.
我想将现有的WinForms用户控件添加到WPF表单中. WinForm用户控件称为“TicketPrinter”,与WPF表单位于同一项目中.
在我的xaml中,我有这一行:
xmlns:Printers="clr-namespace:Project.UserControls.Printers"
然后我在我的xaml中使用它:
<WindowsFormsHost Height="430" HorizontalAlignment="Left" Margin="468,12,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="324"> <Printers:TicketPrinter Printers:Name="ZapTicketPrinter"> </Printers:TicketPrinter> </WindowsFormsHost> </Grid> </Window>
但是当我进入xaml.cs文件后面的代码并尝试访问“ZapTicketPrinter”时,它不能作为参考.
即
我尝试使用ZapTicketPrinter并且无法识别.
我也尝试过以下方法:
TicketPrinter ticketPrinter = this.FindName("ZapTicketPrinter") as TicketPrinter;
但得到一个空
解决方法
提供x:名称而不是printer:name
<WindowsFormsHost> <Printers:TicketPrinter x:Name="ZapTicketPrinter"/> </WindowsFormsHost>
MSDN示例
使用背后的代码
http://msdn.microsoft.com/en-us/library/ms751761.aspx
Walkthrough: Hosting a Windows Forms Control in WPF
使用xaml
http://msdn.microsoft.com/en-us/library/ms742875.aspx
Walkthrough: Hosting a Windows Forms Control in WPF by Using XAML