演练: 创建 UII WPF 托管控件
发布日期: 2016年11月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2013,Dynamics CRM 2015,Dynamics CRM 2016
本演练演示如何构建与 Unified Service Desk 和外部应用程序(独立应用程序和 Web 应用程序)交互的基于 Windows Presentation Foundation (WPF) 的 User Interface Integration (UII) 托管控件。
在本演练中,您将:
创建 UIIWPF 托管控件 “示例UII WPF 托管控件”,当您搜索联系人时,它将显示联系人的名、姓、街道地址和 ID,单击联系人姓名以在 Unified Service Desk 会话中打开它。 这些值从 Unified Service Desk 上下文中显示。
根据我们创建的 UIIWPF 托管控件,在 Unified Service Desk 中托管的外部应用程序和 Web 应用程序中更改名、姓、街道地址值。 在以下较早的演练中创建了外部和 Web 应用程序:演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器。
通知对 Unified Service Desk 上下文进行的更改以更新那里的值。
本主题内容
必备条件
步骤 1:使用 Visual Studio 创建 UII WPF 托管控件
步骤 2:在统一服务控制台中定义该托管控件
步骤 3:在统一服务台中为外部应用程序和 Web 应用程序托管控件定义 UII 操作
测试托管控件
必备条件
Microsoft .NET Framework 4.5.2 项
Unified Service Desk客户端应用程序。 这是测试托管控件所必需的。
Microsoft Visual Studio 2012、Visual Studio 2013 或 Visual Studio 2015
适用于 Visual Studio 2012、Visual Studio 2013 或 Visual Studio 2015 的 NuGet Package Manager
包含 UIIWPF 托管控件项目模板的 Visual Studio 的 Microsoft Dynamics 365 SDK 模板。 您可以通过以下方式之一获取模板:
下载 CRM SDK 模板。 双击 CRMSDKTemplates.vsix 文件在 Visual Studio 中安装模板。
下载并提取 CRM SDK 包。 转至 SDK\Templates 文件夹。 双击 CRMSDKTemplates.vsix 文件在 Visual Studio 中安装模板。
您应当已完成 演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器,确保您已通过适配器设置外部和 Web 应用程序以便与那些应用程序交互。
步骤 1:使用 Visual Studio 创建 UII WPF 托管控件
启动 Visual Studio 并创建一个新项目。
在“新项目”对话框中:
从已安装模板列表中,展开“Visual C#”,并选择 “Dynamics 365 SDK 模板” > “Unified Service Desk” > “UII WPF 托管控件”。
指定项目的名称和位置,然后选择“确定”以创建新项目。
在“解决方案资源管理器”中,右键单击 UiiWpfControl.xaml 文件,然后选择“打开”,以显示 XAML 设计器。
在设计器中,从“工具箱”添加以下控件:
控件类型
客户
文本
标签
lblFirstName
名
标签
lblLastName
姓
标签
lblAddress
街道地址
标签
lblID
ID
文本框
txtFirstName
文本框
txtLastName
文本框
txtAddress
文本框
txtID
按钮
btnUpdate
更新托管应用程序中的值
按钮
btnUpdateContext
更新上下文
这就是控件在 XAML 设计器中应该布设的方式。
双击“更新托管应用程序中的值”按钮 (btnUpdate),为此按钮添加 click 事件的代码,并添加以下代码。
private void btnUpdate_Click(object sender, System.Windows.RoutedEventArgs e) { // This is how you fire an action to other hosted applications. // The DoAction() code in the other application or application adapter // will be called. FireRequestAction(new RequestActionEventArgs("QsExternalApp", "UpdateFirstName", txtFirstName.Text)); // For the external application FireRequestAction(new RequestActionEventArgs("QsExternalApp", "UpdateLastName", txtLastName.Text)); // For the external application FireRequestAction(new RequestActionEventArgs("QsExternalApp", "UpdateAddress", txtAddress.Text)); // For the external application FireRequestAction(new RequestActionEventArgs("QsWebApplication", "UpdateFirstName", txtFirstName.Text)); // For the external web application FireRequestAction(new RequestActionEventArgs("QsWebApplication", "UpdateLastName", txtLastName.Text)); // For the external web application FireRequestAction(new RequestActionEventArgs("QsWebApplication", "UpdateAddress", txtAddress.Text)); // For the external web application }
转到 XAML 设计器,然后双击“更新上下文”按钮 (btnUpdateContext),为此按钮添加 click 事件的代码。 添加以下代码。
private void btnContextChange_Click(object sender, System.Windows.RoutedEventArgs e) { // Get the current context and create a new context object from it. string temp = Context.GetContext(); Context updatedContext = new Context(temp); // Update the new context with the changed information. updatedContext["firstname"] = txtFirstName.Text; updatedContext["lastname"] = txtLastName.Text; updatedContext["address1_line1"] = txtAddress.Text; // Notify Unified Service Desk of this new context information. FireChangeContext(new ContextEventArgs(updatedContext)); // Notify this UII hosted control about the change. NotifyContextChange(updatedContext); }
在同一文件 (UiiWpfControl.xaml.cs) 中,将 NotifyContextChange 方法的替代定义更新为如下内容。
public override void NotifyContextChange(Context context) { // Populating text fields from context information. txtFirstName.Text = context["firstname"]; txtLastName.Text = context["lastname"]; txtAddress.Text = context["address1_line1"]; txtID.Text = context["CustomerID"]; base.NotifyContextChange(context); }
保存您的项目,并生成项目(“生成”>“生成解决方案”)。 项目成功构建后,在您的 /bin/debug 项目文件夹中生成与您的项目名称相同名称的程序集 (.dll 文件),(在此示例中,项目名称为 UIIWPFHostedControl1.dll)。
复制此文件到您的 Unified Service Desk 客户端应用程序安装目录 (通常为 C:\Program Files\Microsoft Dynamics CRM USD\USD)。 此文件是进行测试所必需的,并最终从您的客户端应用程序使用此控件。
提示
注意,用于在 UiiWpfControl.xaml.cs 文件中构建您的 UII 托管控件的类的名称。 在此示例中,类名称为 UiiWpfControl。 您将在下一步中需要使用此信息。
步骤 2:在统一服务控制台中定义该托管控件
若要在 Unified Service Desk 中托管 UII WPF 托管控件,您将必须定义和配置它。
登录到 Microsoft Dynamics 365。
在导航栏上,选择“Microsoft Dynamics 365”>“设置”>“Unified Service Desk”。
在“Unified Service Desk”页面上,选择“托管控件”。
在“托管控件”页面上,选择“新建”。
在“新托管控件”页面中,指定下列值。
字段
值
客户
UIIWPFHostedControl
显示名称
示例 UII WPF 托管控件
USD 组件类型
CCA 托管应用程序
托管应用程序
托管控件
应用程序是全局的
选定
显示组
MainPanel
适配器
不使用适配器
程序集 URI
UIIWPFHostedControl1
程序集类型
UIIWPFHostedControl1.UiiWpfControl
备注
“程序集 URI”是指您的程序集名称,而“程序集类型”是指您的程序集名称,后跟点号 (.) 和您的 Visual Studio 项目内的类别名称。 在此示例中,程序集名称为 UIIWPFHostedControl1,类名称为 UiiWpfControl,是在创建 UII WPF 托管控件时默认的类名称。
![定义新托管控件](images/Dn864937.0ca26027-20b2-4144-81e8-38bcbfd6b552(USD.2).jpeg "定义新托管控件")
- 选择“保存”以创建托管控件。
步骤 3:在统一服务台中为外部应用程序和 Web 应用程序托管控件定义 UII 操作
外部独立和 Web 应用程序适配器具有以下三个操作:UpdateFirstName、UpdateLastName 和 UpdateAddress。 在前面的演练(演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器)中为外部独立和 Web 应用程序创建了这些适配器和托管控件。
若要从 UII WPF 托管控件内更新外部应用程序中的信息,您将需要在每个外部应用程序的适配器中定义与先前定义的名称相同的三个 UII 操作。 在前面的适配器演练(演练:创建 UII 应用程序适配器 和 演练:创建 UII Web 应用程序适配器)中,我们在 Unified Service Desk 中定义了以下两个托管控件以在 Unified Service Desk 中显示外部应用程序:QsExternalApp 和 QsExternalWebApplication。 在此步骤中,我们将为每个托管控件添加三个 UII 操作。
重要
如果您已经在步骤 3 中按照 演练:创建 UII Windows 窗体托管控件 添加了 UII 操作,则不必再次执行此步骤。 您可以继续到下一节测试您的托管控件。
登录到 Microsoft Dynamics 365。
在导航栏上,选择”Microsoft Dynamics 365“ >“设置” >“Unified Service Desk”。
在“Unified Service Desk”页面上,选择“托管控件”。
在“托管的控件”页面上,搜索 QSExternalApp,然后将其打开进行编辑。
在 QSExternalApp 页面上,选择托管控件名称旁边的下拉箭头,然后选择“UII 操作”。
在下一页面上,选择“添加新 UII 操作”。
在“新建 UII 操作”页面上,键入名称 UpdateFirstName,然后选择“保存并关闭”。 这会添加在上一页面中的操作。
用同样的方法,添加以下两个操作:UpdateLastName 和 UpdateAddress。 所有这三个操作即变得对 QSExternalApp 托管控件可用。
按照步骤 4 至 8 为 QSExternalWebApp 创建三个具有相同名称的 UII 操作。
测试托管控件
在测试 UIIWPF 托管控件之前,请确保您的示例 Web 应用程序正在运行,以便它在 Unified Service Desk 内呈现。
运行 Unified Service Desk 客户端以连接到您的 Dynamics 365 服务器。
在成功登录后,您将看到三个托管控件:“示例 UII WPF 托管控件”、“示例外部 Web 应用程序”和“示例外部应用程序”。
选择“搜索”,然后选择“联系人”。 选择任何联系人以在会话中显示该联系人详细信息。 这还显示所有这三个示例控件中当前显示的联系人记录的名、姓、街道地址和 ID:
更改“示例 UII WPF 托管控件”中的值,然后单击“更新托管应用程序中的值”以更新其他两个外部应用程序中的值。
在“示例 UII WPF 托管控件”中,选择“更新上下文”以更新 Unified Service Desk 中的上下文信息。
另请参阅
与外部应用程序和 Web 应用程序集成
UII 托管控件与统一服务台搭配使用
演练:创建 UII Windows 窗体托管控件
UII 操作
Unified Service Desk 2.0
© 2017 Microsoft。 保留所有权利。 版权