VisionPro提供的控件默认是在Windows窗体应用程序中使用的,但在某些客户的特殊需求下,我们需要使用WPF程序,VisionPro并没有WPF程序的控件,为了能在WPF程序在正常使用VisionPro控件,我们可以使用C#提供的WindowsFormsHost
来实现,以下内容参考自群成员交流,如有兴趣,欢迎加入VisionPro交流群,群号在侧栏。
首先新建一个WPF应用程序项目,然后添加引用。这里要说明下,如果你对VisionPro的控件命名不熟悉,请不要问我(太多人问我命名空间问题),自行通过说明文档查阅。
首先添加使用WindowsFormsHost
用到的程序集,System.Windows.Forms
与WindowsFormsIntegration
。这两个是在WPF程序中使用窗体应用程序控件的前提,然后添加VisionPro的相关控件,我这里就以ToolGroup的编辑控件为例。顺带了显示控件的程序集。
然后在XAML代码中引用。在Window标签中添加控件程序集引用如下:
xmlns:cognexWF1="clr-namespace:Cognex.VisionPro.ToolGroup;assembly=Cognex.VisionPro.ToolGroup.Controls"
完整引用如下:
<Window x:Class="VP_for_WPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cognexWF="clr-namespace:Cognex.VisionPro;assembly=Cognex.VisionPro.Controls" xmlns:cognexWF1="clr-namespace:Cognex.VisionPro.ToolGroup;assembly=Cognex.VisionPro.ToolGroup.Controls" Title="MainWindow" Height="350" Width="525"> <Grid> //你的控件代码 </Grid> </Window>
如上代码我添加了两个控件程序集,分别是以cognexWF命名的Cognex.VisionPro.Controls
程序集,以及以cognexWF1命名的Cognex.VisionPro.ToolGroup.Controls
程序集。添加其它程序集参考上面的写法即可。
使用控件请用WindowsFormsHost
标签包裹,如下:
<Window x:Class="VP_for_WPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cognexWF="clr-namespace:Cognex.VisionPro;assembly=Cognex.VisionPro.Controls" xmlns:cognexWF1="clr-namespace:Cognex.VisionPro.ToolGroup;assembly=Cognex.VisionPro.ToolGroup.Controls" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid Name="rowCogDisplays"> <WindowsFormsHost Grid.Row="0" Grid.Column="0"> <cognexWF:CogRecordsDisplay x:Name="cogRecords" Width="400" Height="300" /> </WindowsFormsHost> </Grid> <Grid Name="TOOLGROUP"> <WindowsFormsHost Grid.Row="0" Grid.Column="0"> <cognexWF1:CogToolGroupEditV2 x:Name="toolg" Width="400" Height="300"/> </WindowsFormsHost> </Grid> </Grid> </Window>
代码中若要使用控件,请通过控件标签中的name属性识别。
如果在VS的设计器中无法显示控件效果,请不用在意,忽略即可,程序仍可正常运行。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242002.html