让代码更简单

当前位置:代码狗 > 开发教程 > 工业视觉教程 > 正文

C#在WPF程序XAML中使用VisionPro控件

淘宝1元包邮活动入口:https://m.tb.cn/h.4KDmpkp或复制淘口令 ¥SO8cXWQznV1¥
重要:本文最后更新于2021-03-11 14:28:38,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

VisionPro提供的控件默认是在Windows窗体应用程序中使用的,但在某些客户的特殊需求下,我们需要使用WPF程序,VisionPro并没有WPF程序的控件,为了能在WPF程序在正常使用VisionPro控件,我们可以使用C#提供的WindowsFormsHost来实现,以下内容参考自群成员交流,如有兴趣,欢迎加入VisionPro交流群,群号在侧栏。

首先新建一个WPF应用程序项目,然后添加引用。这里要说明下,如果你对VisionPro的控件命名不熟悉,请不要问我(太多人问我命名空间问题),自行通过说明文档查阅。

首先添加使用WindowsFormsHost用到的程序集,System.Windows.FormsWindowsFormsIntegration。这两个是在WPF程序中使用窗体应用程序控件的前提,然后添加VisionPro的相关控件,我这里就以ToolGroup的编辑控件为例。顺带了显示控件的程序集。

C#在WPF程序XAML中使用VisionPro控件

C#在WPF程序XAML中使用VisionPro控件

然后在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属性识别。

C#在WPF程序XAML中使用VisionPro控件

C#在WPF程序XAML中使用VisionPro控件

如果在VS的设计器中无法显示控件效果,请不用在意,忽略即可,程序仍可正常运行。

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏

评论 抢沙发

×

请作者吃根烤肠!

支付宝