演练: 创建 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 操作

测试托管控件

必备条件

步骤 1:使用 Visual Studio 创建 UII WPF 托管控件

  1. 启动 Visual Studio 并创建一个新项目。

  2. 在“新项目”对话框中:

    1. 从已安装模板列表中,展开“Visual C#”,并选择 “Dynamics 365 SDK 模板” > “Unified Service Desk” > “UII WPF 托管控件”。

    2. 指定项目的名称和位置,然后选择“确定”以创建新项目。

      创建 UII WPF 托管控件

  3. 在“解决方案资源管理器”中,右键单击 UiiWpfControl.xaml 文件,然后选择“打开”,以显示 XAML 设计器。

  4. 在设计器中,从“工具箱”添加以下控件:

    控件类型

    客户

    文本

    标签

    lblFirstName

    标签

    lblLastName

    标签

    lblAddress

    街道地址

    标签

    lblID

    ID

    文本框

    txtFirstName

    文本框

    txtLastName

    文本框

    txtAddress

    文本框

    txtID

    按钮

    btnUpdate

    更新托管应用程序中的值

    按钮

    btnUpdateContext

    更新上下文

    这就是控件在 XAML 设计器中应该布设的方式。

    控制 XAML 设计器中的布局

  5. 双击“更新托管应用程序中的值”按钮 (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
    }
    
  6. 转到 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);
    }
    
  7. 在同一文件 (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);
    }
    
  8. 保存您的项目,并生成项目(“生成”>“生成解决方案”)。 项目成功构建后,在您的 /bin/debug 项目文件夹中生成与您的项目名称相同名称的程序集 (.dll 文件),(在此示例中,项目名称为 UIIWPFHostedControl1.dll)。

  9. 复制此文件到您的 Unified Service Desk 客户端应用程序安装目录 (通常为 C:\Program Files\Microsoft Dynamics CRM USD\USD)。 此文件是进行测试所必需的,并最终从您的客户端应用程序使用此控件。

    提示

    注意,用于在 UiiWpfControl.xaml.cs 文件中构建您的 UII 托管控件的类的名称。 在此示例中,类名称为 UiiWpfControl。 您将在下一步中需要使用此信息。

步骤 2:在统一服务控制台中定义该托管控件

若要在 Unified Service Desk 中托管 UII WPF 托管控件,您将必须定义和配置它。

  1. 登录到 Microsoft Dynamics 365。

  2. 在导航栏上,选择“Microsoft Dynamics 365”>“设置”>“Unified Service Desk”。

  3. 在“Unified Service Desk”页面上,选择“托管控件”。

  4. 在“托管控件”页面上,选择“新建”。

  5. 在“新托管控件”页面中,指定下列值。

    字段

    客户

    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 "定义新托管控件")
  1. 选择“保存”以创建托管控件。

步骤 3:在统一服务台中为外部应用程序和 Web 应用程序托管控件定义 UII 操作

外部独立和 Web 应用程序适配器具有以下三个操作:UpdateFirstNameUpdateLastNameUpdateAddress。 在前面的演练(演练:创建 UII 应用程序适配器演练:创建 UII Web 应用程序适配器)中为外部独立和 Web 应用程序创建了这些适配器和托管控件。

若要从 UII WPF 托管控件内更新外部应用程序中的信息,您将需要在每个外部应用程序的适配器中定义与先前定义的名称相同的三个 UII 操作。 在前面的适配器演练(演练:创建 UII 应用程序适配器演练:创建 UII Web 应用程序适配器)中,我们在 Unified Service Desk 中定义了以下两个托管控件以在 Unified Service Desk 中显示外部应用程序:QsExternalAppQsExternalWebApplication。 在此步骤中,我们将为每个托管控件添加三个 UII 操作。

重要

如果您已经在步骤 3 中按照 演练:创建 UII Windows 窗体托管控件 添加了 UII 操作,则不必再次执行此步骤。 您可以继续到下一节测试您的托管控件。

  1. 登录到 Microsoft Dynamics 365。

  2. 在导航栏上,选择”Microsoft Dynamics 365“ >“设置” >“Unified Service Desk”。

  3. 在“Unified Service Desk”页面上,选择“托管控件”。

  4. 在“托管的控件”页面上,搜索 QSExternalApp,然后将其打开进行编辑。

  5. QSExternalApp 页面上,选择托管控件名称旁边的下拉箭头,然后选择“UII 操作”。

  6. 在下一页面上,选择“添加新 UII 操作”。

  7. 在“新建 UII 操作”页面上,键入名称 UpdateFirstName,然后选择“保存并关闭”。 这会添加在上一页面中的操作。

  8. 用同样的方法,添加以下两个操作:UpdateLastNameUpdateAddress。 所有这三个操作即变得对 QSExternalApp 托管控件可用。

    托管控件的可用 UII 操作

  9. 按照步骤 4 至 8 为 QSExternalWebApp 创建三个具有相同名称的 UII 操作。

测试托管控件

在测试 UIIWPF 托管控件之前,请确保您的示例 Web 应用程序正在运行,以便它在 Unified Service Desk 内呈现。

  1. 运行 Unified Service Desk 客户端以连接到您的 Dynamics 365 服务器。

  2. 在成功登录后,您将看到三个托管控件:“示例 UII WPF 托管控件”、“示例外部 Web 应用程序”和“示例外部应用程序”。

    示例可用的 UII WPF 托管控件

  3. 选择“搜索”,然后选择“联系人”。 选择任何联系人以在会话中显示该联系人详细信息。 这还显示所有这三个示例控件中当前显示的联系人记录的名、姓、街道地址和 ID:

    从这三个控件中 USD 上下文显示的数据

  4. 更改“示例 UII WPF 托管控件”中的值,然后单击“更新托管应用程序中的值”以更新其他两个外部应用程序中的值。

    外部应用程序中更新的值

  5. 在“示例 UII WPF 托管控件”中,选择“更新上下文”以更新 Unified Service Desk 中的上下文信息。

    USD 上下文中更新的值

另请参阅

与外部应用程序和 Web 应用程序集成
UII 托管控件与统一服务台搭配使用
演练:创建 UII Windows 窗体托管控件
UII 操作

Unified Service Desk 2.0

© 2017 Microsoft。 保留所有权利。 版权