次の方法で共有


リソース制御表示構成 XML リファレンス

リソース制御表示構成 (RCDC) リソースは、Microsoft Identity Manager 2016 SP1 (MIM) データ ストア内の他のリソースがエンド ユーザーに対するユーザー インターフェイス (UI) でどのように表示されるかを制御するために使用できるユーザー定義リソースです。 各 RCDC リソースには、UI テキストと UI コントロールを追加、変更、または削除するために変更できる XML 構成ファイルが含まれています。 MIM 2016 SP1 には既定の RCDC リソースがいくつか用意されていますが、カスタム リソース用のカスタム RCDC リソースを作成することもできます。 FIM ポータルでの RCDC UI の使用の詳細については、FIM ドキュメントの「FIM ポータル の構成とカスタマイズの概要」を参照してください。

既知の問題

多くの RCDC コントロールの既定値はサポートされていません。

このリリースでは、オプション ボタン コントロールを除き、リソース コントロール内のコントロールの既定値の設定はサポートされていません。 ドロップダウン ボックスでこの問題を回避するには、どの値にも関連付けられていない既定値を指定して、ユーザーに選択を強制的に変更させることができます。 他のコントロールでこの問題を回避するには、承認ワークフローを使用して、要求の送信中に既定値を指定する必要があります。

基本構造

RCDC リソースの XML データは、単一の ObjectControlConfiguration XML 要素で構成されます。

完全な XSD スキーマについては、「付録 A: 既定の XSD スキーマ を参照してください。

ObjectControlConfiguration 要素の XSD スキーマを次に示します。

<xsd:element name="ObjectControlConfiguration"\>
  <xsd:complexType\>
    <xsd:sequence\>
      <xsd:element ref="my:ObjectDataSource" minOccurs="0" maxOccurs="32"/>
      <xsd:element ref="my:XmlDataSource" minOccurs="0" maxOccurs="32"/>
      <xsd:element ref="my:Panel"/>
      <xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:attribute ref="my:TypeName"/>
    <xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
  </xsd:complexType>
</xsd:element>

ObjectControlConfiguration 要素には、次の要素が含まれています。

  • ObjectDataSource: この要素は、リソース コントロール (RC) が使用するデータ ソース クラスの TypeName を指定します。 説明とスキーマ定義については、このドキュメントの次のデータ ソースのセクションを参照してください。 ObjectControlConfiguration 要素には、ObjectDataSource 要素の最大 32 個のノードを含めることができます。

  • XmlDataSource: これは、概要ページのデザインを指定するために最も一般的に使用される単純なデータ ソースです。 説明とスキーマ定義については、このドキュメントの次のデータ ソースのセクションを参照してください。 ObjectControlConfiguration: 要素には、XmlDataSource 要素の最大 32 個のノードを含めることができます。

  • パネル: 管理者は、Panel 要素内の要素を変更することで、RCDC ページのレイアウトをカスタマイズできます。 詳細については、このドキュメントの後半の「パネル」セクションを参照してください。 ObjectControlConfiguration 要素には、Panel 要素が 1 つだけ必要です。

  • イベント: 管理者はカスタマイズされたコード ビハインドを提供できません。この機能は制限されています。 これは、状態の変化に基づいて、パネルまたはコントロールが出力できるイベントです。 詳細については、このドキュメントの後半の「イベント」セクションを参照してください。 ObjectControlConfiguration 要素には、必要に応じて 1 つの Event 要素を含めることができます。 一般に、カスタム イベント の使用は、後の拡張機能で特に開発されていない限りサポートされません。

データ ソース

Microsoft Identity Manager は、UI コンポーネントにデータをバインドする方法としてデータ ソースを使用します。 これにより、プレゼンテーション層からのデータの分離が容易になります。 RCDC リソース構成データには、ObjectDataSource と XmlDataSource の 2 種類のデータ ソースがあります。

  • ObjectDataSources 、RC にデータを提供する Microsoft .NET クラスを指定。 RCDC の作成時に管理者が使用することを選択できる場合は、使用可能な種類の ObjectDataSource が固定されています。

  • XMLDataSources は、XML ベースのデータを簡単に構造化する方法を提供し、管理者がカスタマイズしたデータを提供するために使用できます。 組み込みの定義済み XML 構造を使用しない限り、XML データは RCDC で直接指定する必要があります。 組み込みの XML 構造は、RC でサマリー ページを生成するために使用されます。

RCDC では、これらのデータ ソースを RCDC で指定された UI コントロールの属性にバインドして、UI を生成できます。

ObjectDataSource 要素

Microsoft Identity Manager は、次の表に示す一般的なデータ ソースの種類を提供します。これは、(記載されている場合を除く) すべてのリソースの種類で使用できます。

タイプ名 説明 双方向バインディング バインド構文
PrimaryResourceObjectDataSource これは、作成、編集、または表示されている FIM 2010 リソースを表します。 バインド文字列のパスは属性名です。 リソースの種類は、RCDC ではなく RCDC の TargetObjectType 属性によって指定されます。ConfigurationData 属性。 イエス 名前で指定されたオブジェクト属性の値を [AttributeName] します。
PrimaryResourceDeltaDataSource このデータ ソースは、元の状態と FIM 2010 リソースの現在の状態を比較するデルタ XML を構築します。 生成されたデルタ XML は、ユーザーが送信している要求の UI をレンダリングするために、RC サマリー コントロールによって使用されます。 いいえ DeltaXml これは、差分を表示するためにサマリー コントロールと共に使用されます。
PrimaryResourceRightsDataSource このデータ ソースは、FIM 2010 リソースの各属性のインライン権限を提供します。 これにより、RC は、その属性に対してユーザーが持っているアクセス許可を送信する前に決定し、その属性の UI を適切にレンダリングできます。 いいえ [AttributeName]
SchemaDataSource このデータ ソースを使用して、表示名、説明、属性が必要かどうか、リソースの種類の情報など、スキーマ関連の情報にアクセスできます。 いいえ [AttributeName].Required 属性に有効な値が必要かどうかを示すブール値です。
[AttributeName].DisplayNameString バインディングの表示名を示す値です。
[AttributeName].DescriptionString バインディングの説明を示す値です。
バインドの文字列正規表現を示す値を [AttributeName].StringRegexString します。
[AttributeName].DisplayName
[AttributeName].Description
[AttributeName].IntegerValueMinimum
[AttributeName].IntegerValueMaximum
[AttributeName].LocalizedAllowedValues
DomainDataSource このデータ ソースは、ドメイン構成リソースに基づいてドメインの列挙を提供します。 このデータ ソースは、グループ リソースとユーザー リソース用の RCDC でのみ使用できます。 イエス ドメイン

グループの Description 属性を編集するために、3 つのデータ ソースを UocTextBox コントロールにバインドする RCDC スニペットの例を次に示します。

<my:ObjectDataSource my:TypeName="PrimaryResourceObjectDataSource" my:Name="object" my:Parameters=""/>
<my:ObjectDataSource my:TypeName="SchemaDataSource" my:Name="schema"/>
<my:ObjectDataSource my:TypeName="PrimaryResourceRightsDataSource" my:Name="rights"/>

     <my:Control my:Name="Description" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Description.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Description}">
          <my:Properties>
               <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
               <my:Property my:Name="Rows" my:Value="3"/>
               <my:Property my:Name="Columns" my:Value="60"/>
               <my:Property my:Name="MaxLength" my:Value="450"/>
               <my:Property my:Name="Text" my:Value="{Binding Source=object, Path=Description, Mode=TwoWay}"/>
          </my:Properties>
     </my:Control>

XMLDataSource 要素

XMLDataSource 要素を使用すると、RCDC が特定のリソースに対して使用できるカスタム データを指定できます。 この場合、XML データは RCDC で指定する必要があります。 別の方法として、このデータ ソースを使用して組み込みの XML データ構造を参照し、概要ページの UI をレンダリングできます。 RCDC で定義するときに使用 XMLDataSource の種類を制御します。

タイプ名 説明 双方向バインディング バインド構文
XMLDataSource データ ソースは XML データを表します。 データは、XSL 形式または埋め込み XSL 形式で指定できます。
  • Microsoft.IdentityManagement.WebUI.Controls.dllの XSL 形式:
    <my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement. WebUI.Controls.Resources.DefaultSummary.xsl"> </my:XmlDataSource>
  • 埋め込み XSL 形式:
    <my:XmlDataSource my:Name="RequestStatusTransformXsl"><xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform xmlns:msxsl="urn:schemas-microsoft-com:xslt"></xsl:stylesheet></my:XmlDataSource>
いいえ Xpath[;namespaces] Xpath は、必要なメモ (ほとんどの場合は "/" (ルート) を選択するための有効な XML xpath です。 namespaces は、prefix=URI 文字列の省略可能なリストです。 この文字列は、名前空間付き XML に対して Xpath が動作するために必要に応じてセミコロンで区切られます。
ReferenceDeltaDataSource データ ソースは、複数値を持つ参照属性の差分を表します。 グループとセットの RCDC でのみ使用されます。
データ ソースはグループまたはセットに限定されませんが、RCDC ホストでコードを変更してこのようなデルタを送信する必要があります。 現時点では、このデータソースを認識するホストは Group と Set だけです。
イエス [AttributeName].Add [AttributeName] は参照属性を表し、返されるデータは差分加算です。
  • 例: [ReferenceAttribute].Add
  • 例: <my:Property my:Name="Value" my:Value="{Binding Source=delta, Path=ExplicitMember.Add, Mode=TwoWay}"/>
[AttributeName].Remove [AttributeName] 参照属性を表し、返されるデータは差分削除です。
DeltaXml
RequestDetailsDataSource データ ソースは、Request オブジェクトの RequestParameter 属性を表します。 このパラメーターは、複数値を持つ属性ごとに表示される属性値の最大数を設定します。 これは RCDC for Request でのみ使用されます。 <my:ObjectDataSource my:TypeName="RequestDetailsDataSource" my:Name="requestDetails" my:Parameters="1000" /> いいえ DeltaXml
RequestStatusDataSource データ ソースは、Request オブジェクトの RequestStatusDetails 属性を表します。 これは RCDC for Request でのみ使用されます。 いいえ DeltaXml

カスタム XML データ ソースを定義するには、次の XML を使用します。

<my:XmlDataSource my:Name="MyCustomData" >
    %Insert custom, properly formatted XML data here%
</my:XmlDataSource>

組み込みの概要コントロール XSL を使用するには、次のようにデータ ソースを定義します。

<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />

カスタム リソースの種類の RCDC を作成する場合は、このメソッドを使用して、そのカスタム リソースの概要ページを自動的にレンダリングできます。

組み込みの XSL を使用して、XMLDataSource 要素で PrimaryResourceDeltaDataSource 要素を使用して、RCDC にサマリー タブを作成する方法の例を次に示します。

<my:ObjectDataSource my:TypeName="PrimaryResourceDeltaDataSource" my:Name="delta" />
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />

<my:Grouping my:Name="summaryGroup" my:Caption="Summary” my:IsSummary="true">
     <my:Control my:Name="summaryControl" my:TypeName="UocHtmlSummary" my:ExpandArea="true">
          <my:Properties>
               <my:Property my:Name="ModificationsXml" my:Value="{Binding Source=delta, Path=DeltaXml}" />
              <my:Property my:Name="TransformXsl" my:Value="{Binding Source=summaryTransformXsl, Path=/}" />
          </my:Properties>
     </my:Control>
</my:Grouping>

別の方法として、ユーザーは、前に指定した XmlDataSource 要素を次の形式に置き換えて、概要ページのカスタマイズされたレイアウトを定義できます。 参考として、このドキュメントの後半の付録 B: 既定の概要 XSL には、既定の FIM 2010 Summary XSL が含まれています。

<my:XmlDataSource my:Name="summaryTransformXsl">
     Insert valid XSL code here
</my:XmlDataSource>

データ ソースのスキーマ

次の XSD スキーマでは、2 種類のデータ ソースが生成されます。

<xsd:element name="ObjectDataSource">
     <xsd:complexType>
          <xsd:sequence/>
          <xsd:attribute ref="my:TypeName"/>
          <xsd:attribute ref="my:Name"/>
          <xsd:attribute ref="my:Parameters"/>
     </xsd:complexType>
</xsd:element>
<xsd:element name="XmlDataSource">
     <xsd:complexType  mixed="true">
          <xsd:sequence>
              <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
          </xsd:sequence>
          <xsd:attribute ref="my:Name"/>
          <xsd:attribute ref="my:Parameters"/>
    </xsd:complexType>
</xsd:element>

イベント要素

Event 要素は、Control の変化する状態を定義します。 イベントがトリガーされた後の動作を定義するカスタマイズされた関数 (ハンドラー) を記述できないため、この機能の拡張性は制限されています。 Panel 要素では、同じ Event 要素を使用できます。 詳細については、このドキュメントの後半の「パネル」セクションを参照してください。

Event 要素の XSD スキーマを次に示します。

<xsd:element name="Events">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="my:Event" minOccurs="1" maxOccurs="16"/>
          </xsd:sequence>
     </xsd:complexType>
</xsd:element>
<xsd:element name="Event">
     xsd:complexType>
          <xsd:simpleContent>
               <xsd:extension base="xsd:string">
                    xsd:attribute ref="my:Name"/>
                    <xsd:attribute ref="my:Handler"/>
               </xsd:extension>
          </xsd:simpleContent>
     </xsd:complexType>
     </xsd:element>

イベント は空の要素であり、次の属性があります。

  • 名前: イベントの一意の名前です。 ObjectControlConfiguration でサポートされているイベントは、Load イベントだけです。 このイベントは、ページが最初に読み込まれるときにトリガーされます。

  • ハンドラー: ハンドラーの一意の名前です。 イベントがトリガーされると、通常、コントロールの状態の変化を処理するプログラム メソッドが呼び出されます。 次のケースはサポートされていません。

    • 既存のコントロールから既存のハンドラーを削除する。
    • 新しいハンドラーの作成。
    • 既存または新しいコントロールにハンドラーをアタッチする。

Events 要素の例を次に示します。

<my:Events>
    <my:Event my:Name="Load" my:Handler="OnLoad"/>
</my:Events>

Panel 要素

Panel 要素は、RCDC レイアウトのコア要素です。 Panel 要素の XSD スキーマを次に示します。

<xsd:element name="Panel">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="my:Grouping" minOccurs="1" maxOccurs="16"/>
          </xsd:sequence>
          <xsd:attribute ref="my:Name"/>
          <xsd:attribute ref="my:DisplayAsWizard"/>
          <xsd:attribute ref="my:Caption"/>
          <xsd:attribute ref="my:AutoValidate"/>
     </xsd:complexType>
</xsd:element>

Panel 要素には、グループ化 定期的な要素が含まれています。 詳細については、このドキュメントの「グループ化」セクションを参照してください。

Panel 要素には、次の属性があります。

  • 名前: パネルの名前。 これは必須の文字列型の属性です。

  • DisplayAsWizard: この属性は現在非推奨です。 RCDC の対応する VerbContext 属性は、リソース レイアウトがウィザード モードかタブ モードかによって制御されます。 0 (作成モード) に設定されている場合は、ウィザード モードにも設定されます。 それ以外の場合は、タブ モードになります。 詳細については、ドキュメントの FIM ポータルの構成とカスタマイズの概要を参照してください。

  • Caption: この属性は現在非推奨です。 ユーザーは、ヘッダー情報のみを含むグループを含めることで、ページのキャプションを指定できます。 詳細については、このドキュメントの「グループ化」セクションを参照してください。

  • AutoValidate: これは省略可能なブール型の属性です。 true に設定すると、現在のタブの各コントロールに対して検証がトリガーされます。既定では、属性がない場合は true に設定されます。 RegularExpression プロパティと組み合わせて使用できます。 詳細については、このドキュメントの後のセクションの「RegularExpression」を参照してください。

Grouping 要素

グループ化 要素は、Panel の全体的なレイアウトを定義します。 これは、個々のコントロールを異なるセクションとタブにグループ化するコンテナーとして機能します。 Grouping 要素の XSD スキーマを次に示します。

<xsd:element name="Grouping">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="my:Help" minOccurs="0"  maxOccurs="1"/>
               <xsd:element ref="my:Control" minOccurs="1" maxOccurs="256"/>
               <xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
          </xsd:sequence>
          <xsd:attribute ref="my:Name"/>
          <xsd:attribute ref="my:Caption"/>
          <xsd:attribute ref="my:Description"/>
          <xsd:attribute ref="my:Enabled"/>
          <xsd:attribute ref="my:Visible"/>
          <xsd:attribute ref="my:IsHeader"/>
          <xsd:attribute ref="my:IsSummary"/>
     </xsd:complexType>
</xsd:element>

グループ化 要素には、次の 3 種類があります。

  • ヘッダーグループ化: ヘッダーグループ化は省略可能です。 パネルのには、ヘッダー グループを 1 つだけ指定できます。 ヘッダー グループは、パネルの上にキャプションとして表示されます。 このグループ化で使用できる UocCaptionControl は 1 つだけです。 ヘッダー グループの例については、「サンプル」セクションを参照してください。

  • コンテンツ グループ化: 少なくとも 1 つのコンテンツ グループ化が必要です。 パネルには複数のコンテンツ グループを含めることができます。 コンテンツ グループは、RCDC ページのメイン コンテンツとして表示されます。 各コンテンツ グループは、同じパネルにタブとして表示され、1 ~ 256 個のコントロールを保持できます。 コンテンツ グループ化の例については、「例」セクションを参照してください。

  • 概要グループ化: 概要グループ化は省略可能です。 1 つのパネルに含めることができるサマリー グループは 1 つだけです。 概要グループは、パネルの最後のタブとして表示されます。 サマリー グループで使用できる UocHtmlSummary コントロール 1 つだけで、ユーザーが要求を送信する前に行った変更を表示できます。 概要グループ化の例については、「例」セクションを参照してください。

各グループ化の種類には、次の要素が含まれています。

  • ヘルプ: この要素は、タブ内のヘルプ テキストを提供します。これを使用して、タブのヘルプ ファイルへのリンクを追加することもできます。

  • コントロール: この要素の詳細については、このドキュメントの「Control」セクションを参照してください。 各グループには、グループ化の種類に応じて、1 ~ 256 個のコントロールが含まれている必要があります。

  • イベント: この要素の詳細については、このドキュメントの「イベント」セクションを参照してください。 各グループ化は、オプションとして 1 つのイベントを持つことができます。 Grouping 要素でサポートされるイベントは次のとおりです。

    • BeforeLeave: このイベントは、ユーザーがコンテンツ グループにタブを残す準備ができたときにトリガーされます。
    • AfterEnter: このイベントは、ユーザーがコンテンツ グループにタブを入力する準備ができたときにトリガーされます。

グループ化には、次の 7 つの属性を含めることができます。

  • 名前: グループ化に必要な名前です。 は、パネル内で一意である必要があります。

  • キャプション: キャプション は、ヘッダー グループのヘッダー キャプションとして表示されます。 [コンテンツ] グループまたは [概要] グループのタブ キャプションとして表示されます。

  • 説明: 省略可能な文字列属性 Description は、コンテンツ グループで使用されている場合にのみ機能します。 この要素を使用して、エンド ユーザーに同じタブ内の情報に関する詳細を提供します。

    この属性がサマリー グループで使用されている場合、XML は無効と見なされます。 この属性がヘッダー グループで使用されている場合、XML は有効であると見なされますが、無視されます。

  • 有効: 省略可能なブール値属性、Enabled が見つからない場合は true に設定されます。 [有効] が false に設定されている場合、エンド ユーザーには [無効] タブが表示されます。この属性は、コンテンツ グループでのみ機能します。

    この属性がサマリー グループで使用されている場合、XML は無効と見なされます。 この属性がヘッダー グループで使用されている場合、XML は有効であると見なされますが、無視されます。

  • 表示: RCDC ページ タブまたはその見出しを非表示にするには、この属性を false に設定します。 既定では、この省略可能なブール型属性は true に設定されます。 この属性は、コンテンツ グループでのみ機能します。

    パネルにコンテンツ グループが 1 つしかない場合、この機能は機能しません。 パネルに複数のコンテンツ グループがある場合は、前述のように動作します。

  • IsHeader: この属性は、グループ化がヘッダー グループかどうかを定義する省略可能なブール型の属性です。 この属性が指定されていない場合は、false に設定されます。

  • IsSummary: これは、グループ化がサマリー グループかどうかを定義する省略可能なブール型の属性です。 この属性が指定されていない場合は、false に設定されます。

グループ化要素の種類の例

このセクションでは、Groupings 要素の例を示します。

例: ヘッダーのグループ化

次の図は、ヘッダー グループのサンプルを示しています。

ヘッダーグループ化

次の XML は、ヘッダー グループ化のサンプルを生成します。 XML では、ヘッダー グループはキャプション テキスト "Sample Header Grouping" を含む領域です。

<!--Sample for a Header Grouping-->
<my:Grouping my:Name="HeaderGroupingSample" my:IsHeader="true">
     <my:Control my:Name="SampleHeaderCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Sample Header Grouping">
          <my:Properties>
               <my:Property my:Name="MaxHeight" my:Value="32"/>
               <my:Property my:Name="MaxWidth" my:Value="32"/>
          </my:Properties>
      </my:Control>
</my:Grouping>
<!--End of Header Grouping Sample-->

例: コンテンツのグループ化

次の図は、コンテンツ グループのサンプルを示しています。

コンテンツグループ化Content GroupingContent Groupingの

次の XML では、サンプル コンテンツ グループが生成されます。 XML では、コンテンツ グループ化はキャプション テキスト "サンプル コンテンツ グループ" を含む領域です。

<!--Sample for a Content Grouping-->
<my:Grouping my:Name="ContentGroupingSample" my:Caption="Sample Content Grouping" my:Description="Some description for content grouping">
     <my:Control my:Name="DisplayName" my:TypeName="UocTextBox" my:Caption="Display name" my:Description="This is the display name of the set.">
          <my:Properties>
               <my:Property my:Name="Required" my:Value="True"/>
               <my:Property my:Name="MaxLength" my:Value="128"/>
               <my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
          </my:Properties>
     </my:Control>
</my:Grouping>
<!--End of Content Grouping Sample-->

例: 概要グループ化

次の図は、概要グループ化の例を示しています。

概要グループ化

次の XML では、概要グループ化のサンプルが生成されます。 XML の概要グループ化は、キャプション テキスト "Sample Summary Grouping" を含む領域です。

<!--Sample for a Summary Grouping-->
<my:Grouping my:Name="Summary" my:Caption="Sample Summary Grouping" my:IsSummary="true">
     <my:Control my:Name="SummaryControl" my:TypeName="UocHtmlSummary" my:ExpandArea="true">
          <my:Properties>
               <my:Property my:Name="ModificationsXml" my:Value="{Binding Source=delta, Path=DeltaXml}"/>
               <my:Property my:Name="TransformXsl" my:Value="{Binding Source=summaryTransformXsl, Path=/}"/>
          </my:Properties>
     </my:Control>
</my:Grouping>
<!--End of Summary Grouping Sample-->

Help 要素

ヘルプ 要素は、省略可能な要素として Grouping 要素または Control 要素に含めることができます。 グループ化で使用する場合は、最初に使用する要素である必要があります。 エンド ユーザーが正確な情報を提供するのに役立つテキスト ヘルプをエンド ユーザーに提供します。 ヘルプ要素の XSD スキーマは次のとおりです。

<xsd:element name="Help">
     <xsd:complexType>
          <xsd:sequence/>
          <xsd:attribute ref="my:HelpText"/>
          <xsd:attribute ref="my:Link"/>
     </xsd:complexType>
</xsd:element>

次の XML サンプル コードでは、ヘルプ要素が生成されます。

<my:Help my:HelpText="Some Help Text for Group Basic Info" my:Link="03e258a0-609b-44f4-8417-4defdb6cb5e9.htm#bkmk_grouping_GroupingBasicInfo" />

Control 要素

グループ化要素には、1 つ以上の Control 要素が含まれています。 コントロールは RCDC の主要な要素です。 グループ化要素をカスタマイズするには、それに含まれるさまざまな Control 要素を定義します。 次の XSD スキーマは Control 要素用です。

<xsd:element name="Control">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="my:Help" minOccurs="0"  maxOccurs="1"/>
               <xsd:element ref="my:CustomProperties" minOccurs="0"  maxOccurs="1"/>
               <xsd:element ref="my:Options" minOccurs="0"  maxOccurs="1"/>
               <xsd:element ref="my:Buttons" minOccurs="0"  maxOccurs="1"/>
               <xsd:element ref="my:Properties" minOccurs="0"  maxOccurs="1"/>
               <xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
          </xsd:sequence>
          <xsd:attribute ref="my:Name"/>
          <xsd:attribute ref="my:TypeName"/>
          <xsd:attribute ref="my:Caption"/>
          <xsd:attribute ref="my:Enabled"/>
          <xsd:attribute ref="my:Visible"/>
          <xsd:attribute ref="my:Description"/>
          <xsd:attribute ref="my:ExpandArea"/>
          <xsd:attribute ref="my:Hint"/>
          <xsd:attribute ref="my:AutoPostback"/>
          <xsd:attribute ref="my:RightsLevel"/>
     </xsd:complexType>
</xsd:element>

Control 要素には、次の要素が含まれています。

  • ヘルプ: この要素は無視されます。 グループ化でのみ機能します。

  • CustomProperties: この要素はサポートされていません。

  • Options: この要素は、UocDropDownList または UocRadioButtonList コントロールと組み合わせてのみ使用されます。 他のコントロールでは機能しません。 この要素の構造については、このドキュメントの「オプション」セクションを参照してください。 コントロールでオプションを使用する方法については、このドキュメントの「個々のコントロール」セクションを参照してください。

  • Buttons: この要素は、UocListView コントロールと組み合わせてのみ使用されます。 他のコントロールでは機能しません。 詳細については、このドキュメントの「UocListView」セクションを参照してください。

  • プロパティ: この要素は、コントロールの追加の動作を指定するすべてのコントロールで使用されます。 この要素の詳細については、このドキュメントの「プロパティ」セクションを参照してください。

  • イベント: この要素の構造については、このドキュメントの前の「イベント」セクションを参照してください。 コントロールで使用されるイベントについては、このドキュメントの「個々のコントロール」セクションを参照してください。

Control 要素には、次の 10 個の属性を含めることができます。

  • 名前: コントロールの名前です。 コントロールの名前は、各パネル内で一意である必要があります。 これは必須の文字列型の属性です。

  • TypeName: この属性は、コントロールの種類を指定します。 これは必須の文字列型の属性です。 各コントロール名については、このドキュメントの「個々のコントロール」セクションを参照してください。

  • Caption: この属性を使用して、コントロールのキャプションを含めることができます。 キャプションは、通常、コントロールが表示または入力しているデータの表示名です。 キャプションの値を明示的に指定することも、スキーマ属性の表示名情報とバインドすることもできます。 キャプションは、通常サイズのコントロールの左端に表示されます。 コントロールが全画面表示にまたがって表示される場合は、コントロールの上にキャプションが表示されます。 これは省略可能な文字列型の属性です。 属性またはプロパティ値を使用してデータ ソースをバインドする方法については、「プロパティ」セクションを参照してください。

    次の例は、キャプションを明示的に使用する方法を示しています。

      <my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias">…<my:Control/>
    

    次の例は、データ ソースでキャプションを使用する方法を示しています。 このドキュメントで前に示したデータ ソースのテンプレートを使用している場合、データ ソースはスキーマです。 属性の DisplayName を Caption 属性にバインドすることをお勧めします。

    <my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}">…<my:Control/>
    
  • Enabled: これは省略可能なブール型の属性です。 この属性値を false に設定すると、ユーザーはコントロールを無効にすることができます。 既定値は true に設定されます。

  • 表示: これは省略可能なブール型の属性です。 この属性を使用すると、コントロール全体を非表示にすることができます。 既定値は true に設定されます。

  • 説明: この省略可能な文字列型の属性を使用して、エンド ユーザーがコントロールに配置する必要がある内容やコントロールの動作を理解するのに役立つ説明を含めます。 説明の値を明示的に指定することも、スキーマ属性の説明情報とバインドすることもできます。

    説明は、キャプションの下の通常サイズのコントロールの左端に表示されます。 コントロールが全画面表示にまたがる場合は、キャプションの下のコントロールの上部に説明が表示されます。 属性またはプロパティ値を使用してデータ ソースをバインドする方法については、このドキュメントの「プロパティ」セクションを参照してください。

    次の例は、Description を明示的に使用する方法を示しています。

    <my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias" my:Description="This is explicit description.">…<my:Control/>
    

    この例では、データ ソースで Description を使用する方法を示します。 このドキュメントで前に示したデータ ソースのテンプレートを使用している場合、データ ソースはスキーマ です。 属性の Description を Description 属性にバインドすることをお勧めします。

    <my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=Alias.Description, Mode=OneWay}">…<my:Control/>
    
  • ExpandArea: この属性は、コントロールが全画面表示に及ぶかどうかを示します。 これは省略可能なブール型の属性です。 既定値は false に設定されます。

    この属性が true に設定されている場合、Caption 属性と Description 属性は無効になります。 UocLabel コントロールを使用して、展開されたコントロールのキャプションを指定します。

  • ヒント: これは省略可能な文字列型の属性です。 Hint 属性のテキストは、エンド ユーザーがコントロールの有効な入力を決定するのに役立ちます。 ヒントがコントロールの下に表示されます。

  • AutoPostback: これは省略可能なブール型の属性です。 既定値は false です。 false に設定すると、ページを更新してもコントロールが更新されないことがあります。 自動ポストバックの詳細については、同じ名前の Microsoft ASP.NET UI コントロール プロパティを探します。

  • RightsLevel: これは省略可能な文字列型の属性です。 この属性は、データ ソースに対するインライン権限でのみバインドできます。 コントロールは、ユーザーの権限に基づいて動的にオンまたは無効になります。 属性またはプロパティ値を使用してデータ ソースをバインドする方法については、このドキュメントの「プロパティ」セクションを参照してください。

    この例では、データ ソースで RightsLevel 属性を使用する方法を示します。 このドキュメントで前に示したデータ ソースのテンプレートを使用している場合、データ ソースは 権限です。 属性名を Path として使用します。

プロパティ要素

Property 要素を使用して、各コントロールの動作をさらにカスタマイズできます。 プロパティは空の要素です。 次の XSD スキーマは、Property 要素用です。

<xsd:element name="Properties">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="my:Property" minOccurs="1" maxOccurs="32"/>
          </xsd:sequence>
     </xsd:complexType>
</xsd:element>
<xsd:element name="Property">
     <xsd:complexType>
          <xsd:simpleContent>
               <xsd:extension base="xsd:string">
                    <xsd:attribute ref="my:Name"/>
                    <xsd:attribute ref="my:Value"/>
               </xsd:extension>
          </xsd:simpleContent>
     </xsd:complexType>
</xsd:element>

すべてのプロパティには、次の 2 つの必須属性があります。

  • 名前: この文字列型の属性は、プロパティの一意の名前です。 コントロールによってプロパティが異なります。 すべてのコントロールで使用できる一般的なプロパティがいくつかあります。 特定のコントロールで使用できる名前の詳細については、このドキュメントの「共通プロパティ」および「個々のコントロール」セクションを参照してください。

  • : プロパティの値です。 割り当てられているプロパティに依存する値のデータ型。 特定のプロパティに使用できる値の形式については、次のセクションを参照してください。

データ ソース コンテンツを使用してプロパティをバインドする

一部のプロパティは、データ ソースからの情報とバインドできます。 このバインディングを行うには、次の文字列形式を使用します。 プロパティをデータ ソースにバインドする方法については、このドキュメントの「個々のコントロール」セクションの個々のプロパティの説明を参照してください。

<my:Property my:Name="Required" my:Value="[Formatted String]"/>

   Formatted String :=  “{Binding “ + [SourceExpression] + “,” + [PathExpression] + “,” + [ModeExpression]? + “}

   SourceExpression:= “Source=” + [ObjectDataSourceName]

   PathExpression:= “Path=” + [AttributeName]|[AttributePropertyName]

   ModeExpression:= “Mode=” + [ModeChoice]

   ModeChoice:= “OneWay”|”TwoWay”

   ObjectDataSourceName:= The value of any string assign to node /ObjectControlConfiguration/ObjectDataSource/Name.

   AttributeName:= valid schema attribute name from the data source.

   AttributePropertyName:= valid property name of a schema attribute from the data source.

次の XML は、データ ソースを Property 要素にバインドする方法を示しています。

<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>

共通プロパティ

このドキュメントで指定されているすべての RCDC コントロールには、このセクションで説明する共通プロパティを使用できます。 これらのプロパティは、さまざまなコントロールに固有の他のプロパティと共に使用できます。

  • 必須: このプロパティは、フィールドが必須フィールドまたは省略可能なフィールドであることを示します。 必須フィールドには値を入力する必要があります。 空の値は、文字列入力ではサポートされていません。 省略可能なフィールドは空のままにすることができます。 このフィールドが値が入力されていない必須フィールドの場合、入力コントロールの上にエラー メッセージが表示されます。 フィールドが必須か省略可能かを明示的に指定できます。 属性とリソースの種類の間の特定のバインディングのスキーマ情報をフィールドにバインドすることもできます。 既定では、このプロパティがない場合は、コントロールが省略可能な入力コントロールであることを意味します。

    次の例では、このプロパティに明示的な値を使用します。

    <my:Property my:Name="Required" my:Value="True"/>
    

    このプロパティに動的データ ソースを使用する例を次に示します。 このドキュメントの前のセクションで示したデータ ソースのテンプレートを使用している場合、データ ソースはスキーマです。 パスとして <attribute name>.Required を使用します。

    <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
    
  • ReadOnly: このプロパティを true に設定すると、エンド ユーザーはコントロールを読み取り専用モードで表示します。 これは省略可能なブール型の属性です。 既定値は false に設定されます。 ただし、このプロパティの動作が、ユーザーがコントロールとのデータ バインドに対して持っている権限の種類によって上書きされる場合があります。 たとえば、ユーザーがフィールドを更新する権限を持っていない場合、フィールドがインライン権限でバインドされている場合、このプロパティが false に設定されていても、ユーザーはデータを読み取り専用モードで表示します。

  • RegularExpression: このプロパティは、コントロールの値に適用される制限を指定します。 このプロパティ値の形式は、.NET StringRegex 標準でサポートされている形式です。 詳細については、「.NET Framework 正規表現の 」を参照してください。 コントロールを使用して値を入力する場合、ユーザーが現在のページから移動しようとすると、このプロパティで指定されている制限に対して値がチェックされます。 入力が無効なコントロールの上にエラー メッセージが表示されます。 ユーザーは文字列正規表現を明示的に指定できます。 ユーザーは、特定の属性のスキーマ情報とバインドすることもできます。 既定では、このプロパティが見つからない場合は、コントロールが入力文字列の制限をチェックしないことを意味します。

    次の例では、このプロパティに明示的な値を使用します。

    <my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
    

    このプロパティに動的データ ソースを使用する例を次に示します。 このドキュメントで既に示したデータ ソースのテンプレートを使用している場合、データ ソースはスキーマです。 パスとして <attribute name>.StringRegex を使用します。

    <my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=Alias.StringRegex, Mode=OneWay}"/>
    
  • 表示: これは省略可能なブール型の属性です。 この属性を使用すると、コントロール全体を非表示にすることができます。 既定値は true に設定されます。

Options 要素

Options 要素には、1 つ以上の Option サブノードが含まれています。 Options 要素は、UocRadioButtonList および UocDropDownList コントロール でのみ使用されます。 これらのコントロールの使用方法の詳細については、このドキュメントの「個々のコントロール」セクションを参照してください。

Options 要素の XSD スキーマを次に示します。

<xsd:element name="Options">
     <xsd:complexType>
          <xsd:sequence>
               <xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
          </xsd:sequence>
     </xsd:complexType>
</xsd:element>
<xsd:element name="Option">
     <xsd:complexType>
          <xsd:simpleContent>
               <xsd:extension base="xsd:string">
                    <xsd:attribute ref="my:Value"/>
                    <xsd:attribute ref="my:Caption"/>
                    <xsd:attribute ref="my:Hint"/>
               </xsd:extension>
          </xsd:simpleContent>
     </xsd:complexType>
</xsd:element>

Options 要素には、次の属性があります。

  • : これは文字列型の必須の属性です。 value 属性は、同じコントロール内で一意である必要があります。 大文字と小文字を区別しない A から Z の文字のみを使用できます。

  • キャプション: この必須属性は、各オプションの表示名です。

  • ヒント: これは省略可能な属性です。 この属性を使用して、エンド ユーザーに詳細情報とヒントを提供します。

環境変数

RCDC 構成では、次の環境変数を使用できます。

変数 説明
<LoginID> 現在ログインしているユーザーの ID を表示します。
<LoginDomain> 現在ログインしているユーザーのドメインを表示します。
<Today> 現在の日付と時刻を表示します
<FromToday_nnn> 現在の日付と nnn と時刻を表示します。ここで、nnn は整数です。
<ObjectID> RCDC プライマリ リソース ID。
<Attribute_xxx> RCDC プライマリ リソースの指定した属性 xxx を返します。

XML 構成ファイルのデバッグ

RCDC の XML 構成ファイルを開発または変更する場合、Microsoft Visual Studio などのエディターを使用して XSD ファイルに対して XML を検証することで、エラーを減らすことができます。 詳細については、「Visual Studio 2005の XML ツールの概要」を参照してください。

ヘルプ ファイルをカスタマイズする

新しいリソースと属性を作成する場合は、FIM ポータルの既存のヘルプ ファイルを、カスタマイズしたリソースのコンテンツで更新できます。 FIM ポータルのヘルプ ファイルは .htm 形式であり、手動で編集できます。 カスタム属性の作成の詳細については、FIM 2010 ドキュメントの「カスタム リソースおよび属性管理の概要」を参照してください。

重要

この記事では、HTML の書式設定または編集の基本に関する情報は提供されていません。 ユーザーは HTML ファイルの編集方法を知っている必要があります。

ヘルプ ファイルの場所

Microsoft Identity Manager 2016 SP1 ポータルのすべてのヘルプ ファイルは、MIM サービス サーバーのフォルダー <ProgramFiles>\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Layouts\MSILM2\Help\1033\html にあります。

特定のヘルプ ファイルを見つける

FIM ポータルのすべてのヘルプ ファイルには、グローバル一意識別子 (GUID) を使用して名前が付けられます。 カスタム リソースの適切なファイルを見つけるには:

  1. FIM ポータルで、カスタマイズするポータル ページでヘルプ ファイルを開きます。

  2. ヘルプ ファイルを右クリックし、[プロパティ] 選択します。

  3. <GUID\>.htm フィールドの ファイルを強調表示してコピーします。

  4. ヘルプ ファイルが格納されているフォルダーを参照し、ファイルを検索します。

既存の Grouping 要素に属性のコンテンツを追加する

既存の Grouping 要素 (タブ) 内に新しい属性の説明コンテンツを追加するには:

  1. 適切なヘルプ ファイルを特定して見つけます。

  2. HTML エディターを使用して、ファイルを開きます。

  3. コンテンツを追加する場所を見つけます。 通常、これは追加の段落にあります。次に例を示します。

    <p xmlns="">A new paragraph with customized information.</p>

    また、既存のリストに挿入される項目の場合もあります。次に例を示します。

    <li class="unordered"><b>First Name</b> – The first name of the User.<br>
    <li class="unordered"><b>Last Name</b> - The last name of the User.<br>
    <li class="unordered"><b>Added a new line</b><br>
    

既存の Grouping 要素のコンテンツを追加する

FIM ポータル ページの大部分には複数のグループ化要素 (またはタブ) があり、関連するヘルプ ファイルには、各グループ化要素に関連するブックマーク付きセクションがあります。 HTML のブックマークはセクションで指定します。 たとえば、FIM ポータルの [ユーザーの作成] ページのヘルプ ファイルの [作業情報] タブの HTML を次に示します。

<a name="bkmk_grouping_WorkInfo" xmlns=""></a><h3 class="subHeading" xmlns="">Work Info</h3><p class="subHeading" xmlns=""></p><div class="subSection" xmlns="">

これは、ユーザー作成用の 構成 RCDC の構成データ XML ファイルの WorkInfo グループ化要素によって参照されます。 \<GUID\>.htm ファイル名とブックマークは、my:Link パラメーターで指定します。

<my:Grouping my:Name="WorkInfo" my:Caption="%SYMBOL_WorkInfoTabCaption_END%" my:Enabled="true" my:Visible="true"> <my:Help my:HelpText="%SYMBOL_WorkInfoTabHelpText_END%" my:Link="5e18a08b-4b20-48b8-90c6-c20f6cbeeb44.htm#bkmk_grouping_WorkInfo"/>

シンプルなコントロールのサンプル

このセクションでは、さまざまな単純なテキスト ボックス コントロールを作成するためのサンプルを提供します。

次の図は、さまざまなモードの単純なテキスト ボックス コントロールを示しています。

単純なテキスト ボックス コントロールSimple text-box controlsSimple text-box controlsをする

次のコード セグメントは、すべての属性とプロパティに明示的なテキストを使用する最初のテキスト ボックス コントロールを作成します。

<!-- Sample for a simple control to use explicit information. (with hints)-->
<my:Control my:Name="ExplicitControl" my:TypeName="UocTextBox" my:Caption="Explicit Control" my:Description="This is explicit description." my:Hint="This is a Hint (enter any text).">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="True"/>
          <my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
          <my:Property my:Name="Text" my:Value="Enter Information Here"/>
     </my:Properties>
</my:Control>
<!-- End of Sample for a simple control to use explicit information.-->

次のコード セグメントでは、2 つ目のテキスト ボックス コントロールを作成します。このコントロールは、動的バインディング手法を使用して、コントロールを別のデータ ソースにリンクします。

<!-- Sample for a simple control to use stored data information.-->
<my:Control my:Name="DynamicControl" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=DisplayName.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=DisplayName.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=DisplayName, Mode=OneWay}">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required, Mode=OneWay}"/>
          <my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=DisplayName.StringRegex, Mode=OneWay}"/>
          <my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
     </my:Properties>
</my:Control>
<!-- End of Sample for a simple control to use stored data information.-->

次のコード セグメントでは、3 番目の展開ラベルとテキスト ボックス コントロールが作成されます。

<!-- Sample for a simple expanded control with caption control.-->
<my:Control my:Name="SampleExpandLabel" my:TypeName="UocLabel" my:ExpandArea="true">
     <my:Properties>
          <my:Property my:Name="Text" my:Value="This is an expanded control."/>
     </my:Properties>
</my:Control>
<my:Control my:Name="ExpandedControl" my:TypeName="UocTextBox"
          my:ExpandArea="true">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="false"/>
          <my:Property my:Name="Columns" my:Value="40"/>
          <my:Property my:Name="Text" my:Value="Expanded control (enter text)"/>
     </my:Properties>
</my:Control>
<!-- End of Sample for a simple expanded control.-->

次のコード セグメントでは、無効になっている 4 番目のテキスト ボックス コントロールが作成されます。 このコントロールでは、無効な状態と有効な状態の間に表示される違いは表示されませんが、ユーザーはテキスト ボックスにデータを入力できなくなります。

<!-- Sample for a simple disabled control.-->
<my:Control my:Name="DisabledControl" my:TypeName="UocTextBox" my:Caption="Disabled Control" my:Description="This is disabled simple control." my:Enabled="false">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="false"/>
          <my:Property my:Name="MaxLength" my:Value="128"/>
          <my:Property my:Name="Text" my:Value="Disabled control"/>
     </my:Properties>
</my:Control>
<!-- End of Sample for a simple disabled control.-->

個々のコントロール

このセクションでは、Microsoft Identity Manager 2016 SP1 で提供される個々のコントロールについて説明します。

UocButton

: UocButton

説明: これは、特定のアクションをトリガーするために使用できる単純なボタン コントロールです。 ただし、独自のハンドラーを指定できないため、このコントロールの使用は制限されます。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • テキスト: このプロパティは、ボタンに表示されるテキストを指定します。 これは省略可能な文字列型の属性です。 テキストは明示的な文字列値を受け取ります。

イベント:

  • OnButtonClicked: ボタンをクリックするとイベントが生成されます。

:

UocButton コントロールUocButton controlUocButton controlの

次の XML セグメントでは、単純な UocButton コントロール ボタンが生成されます。

<!--Sample enabled simple button control-->
<my:Control my:Name="ButtonControl" my:TypeName="UocButton" my:Caption="SampleButton" my:Description="This is a simple button."
my:Hint="Click the button">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="True"/>
          <my:Property my:Name="Text" my:Value="Click Me"/>
     </my:Properties>
</my:Control>
<!--End of sample enabled simple button control -->

UocCaptionControl

Name: UocCaptionControl

説明: このコントロールは、RCDC ページのキャプションを表示するために使用されます。 このコントロールは、ヘッダー グループ内の単一のコントロールとしてのみ使用するように設計されています。 他のコンテキストで使用すると、レンダリングの問題やポータル エラーが発生する可能性があります。

モード: 読み取り専用 (OneWay)

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • MaxHeight: このプロパティは、キャプション セクションのアイコンの最大高さを指定します。 このプロパティは省略可能です。 このプロパティは、整数値をピクセル単位で受け取ります。 既定値は 32 ピクセルです。

イベント:

  • このコントロールのイベントはありません。

:

UocCaptionControl コントロールUocCaptionControl controlUocCaptionControl controlをする

次のコード セグメントでは、ヘッダー キャプションが生成されます。

<!--Sample header caption control-->
<my:Control my:Name="SampleHeaderCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Header Caption" my:Description="Description Starts here.">
     <my:Properties>
          <my:Property my:Name="MaxHeight" my:Value="32"/>
          <my:Property my:Name="MaxWidth" my:Value="32"/>
     </my:Properties>
</my:Control>
<!--End of sample header caption control-->

次のコード セグメントでは、明示的コンテンツ キャプションが生成されます。

<my:Control my:Name="SampleContentCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Sample Explicit Content Caption" my:Description="Explicit content caption with smaller icon">
     <my:Properties>
          <my:Property my:Name="MaxHeight" my:Value="20"/>
          <my:Property my:Name="MaxWidth" my:Value="20"/>
     </my:Properties>
</my:Control>
<!--End of sample caption-->

次のコード セグメントでは、動的キャプション 表示名が生成されます。

<!--Sample content dynamic caption-->
<my:Control my:Name="Caption3" my:TypeName="UocCaptionControl" my:Caption="{Binding Source=schema, Path=DisplayName.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=DisplayName.Description, Mode=OneWay}"/>
<!--End of sample caption -->

UocCheckBox

: UocCheckBox

説明: これは単純なチェック ボックス コントロールです。 このコントロールをブール型データにバインドすることをお勧めします。 このコントロールは、バインドするデータに基づいて、読み取り専用コントロールまたは更新可能なコントロールとして使用できます。

このリリースでは、編集モードでチェック ボックス コントロールを使用してブール型の属性を表示するときに、属性に以前に割り当てられた値がない場合、リソース コントロールは、OK が編集モードでクリックされたときに、false の値を属性に追加します。 回避策として、存在しない属性が false と同じであることを前提とするブール型の属性常に作成するか、ブール型属性のラジオ ボタンなどの他のコントロールを使用します。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • DefaultValue: これは省略可能なブール型のプロパティです。 既定値は false に設定されます。 このフィールドは、チェック ボックスの既定の動作を指定します。 これは明示的に指定できます。

  • Checked: これは省略可能なブール型のプロパティです。 既定値は false に設定されます。 この値は、DefaultValue プロパティが DefaultValue と共に存在する場合に上書きします。 このフィールドは、チェック ボックスの動作を指定します。 DefaultValue と同様に、これは明示的に指定することも、サーバーのデータとバインドすることもできます。

  • テキスト: これは省略可能な文字列型の属性です。 チェック ボックスの右側にテキストが表示されます。 このプロパティを使用して、エンド ユーザーに詳細情報を提供するテキストを指定できます。

イベント:

  • checkedChanged : チェック ボックスの状態が変更されると、このイベントが生成されます。

:

次の例では、カスタム リソースの種類と IsConfigurationType 属性の間にカスタム バインドが作成されます。 XML は、カスタム リソースの種類の RCDC で使用されます。

UocCheckBox コントロールUocCheckBox controlUocCheckBox controlをする

次のコード セグメントでは、前の図の動的チェック ボックスのように、動的チェック ボックスが生成されます。 この種類のバインドは、明示的なチェック ボックスよりも汎用性が高く便利です。 属性は、現在のリソースの種類に属している必要があります。

<!--Sample dynamic check box-->
<my:Control my:Name="SampleDynamicCheckBox" my:TypeName="UocCheckBox" my:Caption="Dynamic Check Box" my:Description="This is a dynamic check box. It saves to data source." my:RightsLevel="{Binding Source=rights, Path=IsConfigurationType}">
     <my:Properties>
          <my:Property my:Name="Text" my:Value="{Binding Source=schema, Path=IsConfigurationType.DisplayName, Mode=OneWay}"/>
          <my:Property my:Name="Checked" my:Value="{Binding Source=object, Path=IsConfigurationType, Mode=TwoWay}"/>
     </my:Properties>
</my:Control>
<!--End of sample dynamic check box -->

UocCommonMultiValueControl

名前: UocCommonMultiValueControl

説明: これは、特殊な文字列の書式設定をサポートする複数行テキスト ボックス コントロールです。 複数値を持つエントリ間の各値は、セミコロン (;)またはテキスト ボックス内の改行) で区切られます。 このコントロールは、複数値、短い文字列、および整数型のデータとバインドすることをお勧めします。 このコントロールは、読み取り専用モードと更新可能モードの両方をサポートします。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • DataType: これは必須の文字列型属性です。 これは、文字列、整数、または DateTime 明示的に指定できます。 スキーマ属性の DataType プロパティを使用して属性をバインドすることもできます。 複数値参照型は、UOCListView または UOCIdentityPicker で処理する必要があります。 複数値のブール値は、サポートされているデータ型ではありません。

  • : これは省略可能な整数型の属性です。 ボックスの高さを文字数で定義できます。 既定値は 1 に設定されています。

  • : これは省略可能な整数型の属性です。 ボックスの幅を文字数で定義できます。 既定値を 20 に設定します。

  • 値の: これは省略可能な文字列型の属性です。 この属性は、データ ソースにのみバインドできます。

イベント:

  • ValueListChanged: このイベントは、コントロール内の現在の値が変更されたときにトリガーされます。

例:

次の例では、AMultiValueString という名前の複数値の文字列属性が作成され、カスタム リソースの種類にバインドされます。 この例は、このバインドが作成された後にのみ機能します。

UocCommonMultiValueControl コントロールUocCommonMultiValueControl controlUocCommonMultiValueControl controlの

次のコード セグメントでは、UocCommonMultiValueControl コントロールが生成されます。

<!--Sample multivalue control-->
<my:Control my:Name="SampleDynamicMultiValueControl" my:TypeName="UocCommonMultiValueControl" my:Caption="{Binding Source=schema, Path=AMultiValueString.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=AMultiValueString.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=AMultiValueString}">
     <my:Properties>
          <my:Property my:Name="Rows" my:Value="6"/>
          <my:Property my:Name="Columns" my:Value="60"/>
          <my:Property my:Name="DataType" my:Value="String"/>
          <!--not supported for above property my:Value={Binding Source=schema, Path=AMultiValueString.DataType, Mode=OneWay}"/>-->
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=AMultiValueString, Mode=TwoWay}"/>
     </my:Properties>
</my:Control>
<!--End of sample multivalue control -->

UocDateTimeControl

Name: UocDateTimeControl

説明: これはテキスト ボックス コントロールに似ていますが、説明 は特定の形式のみを受け入れます。 読み取り専用モードでは、ラベルのように表示されます。 サポートされている入力文字列の形式については、このセクションの dateTimeFormat プロパティ を参照してください。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • DateTimeFormat: これは省略可能な文字列型の属性です。 サポートされている形式は、DateTime と DateOnly です。 既定値は、DateTime 形式に設定されます。

    • DateTime: 属性は mm/dd/yyyy hh:mm:ss AM として書式設定されます。

    • DateOnly: 属性は mm/dd/yyyy として書式設定されます。

      DateTime 形式と dateOnly 形式 の両方がサポートされます。これは、相違点を指定するユーザーに関係なくです。

  • 値の: これは省略可能な文字列型の属性です。 この属性は、リソース データ ソースにバインドします。 この属性の値は、正しい datetime 形式に準拠している必要があります。

イベント:

  • DateTimeChanged: datetime 値が変更されると、イベントが発生します。

:

UocDateTimeControl コントロールUocDateTimeControl controlUocDateTimeControl controlをする

次のコード セグメントは、DateTime コントロールの最初の を生成します。

<!--Sample explicit DateTime control-->
<my:Control my:Name="SampleExplicitDateTimeControl" my:TypeName="UocDateTimeControl" my:Caption="Explicit Date Time Control" my:Description="The data shown here is explicit and in date time format.">
     <my:Properties>
          <my:Property my:Name="DateTimeFormat" my:Value="DateTime"/>
          <my:Property my:Name="Value" my:Value="11/11/2008 00:00:00"/>
     </my:Properties>
</my:Control>
<!--End of sample explicit DateTime control -->

次のコード セグメントは、DateTime コントロール 2 番目のコード セグメントを生成します。 [データ ソース] セクションでサンプル コードを使用した場合、ExpirationTime 属性はすべてのリソースの種類にバインドされます。 そのため、次のコードで使用できます。

<!--Sample dynamic DateTime control-->
<my:Control my:Name="SampleDynamicDateTimeControl" my:TypeName="UocDateTimeControl" my:Caption="{Binding Source=schema, Path=ExpirationTime.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ExpirationTime.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=ExpirationTime}">
     <my:Properties>
          <my:Property my:Name="DateTimeFormat" my:Value="DateOnly"/>
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ExpirationTime, Mode=TwoWay}"/>
     </my:Properties>
</my:Control>
<!--End of dynamic explicit DateTime control -->

UocDropDownList

名前: UocDropDownList

説明: これは単純なドロップダウン ボックス コントロールです。 このコントロールは、定義された選択肢のセットからオプションを選択するために使用されます。 このコントロールには、文字列、整数、datetime、および Boolean のデータ型が適しています。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • ValuePath: ItemSource から Value 属性を取得するプロパティ。 ItemSource が Custom として指定されている場合、値のパスは Value に設定されます。 このセクションで説明するように、Option 要素の Value フィールドとバインドされます。

  • CaptionPath: ItemSource から Value 属性を取得するプロパティ。 ItemSource が Custom として指定されている場合、値のパスは Caption に設定されます。 このセクションで説明するように、Option 要素の Caption フィールドとバインドされます。

  • HintPath: ItemSource から Value 属性を取得するプロパティ。 ItemSource が Custom として指定されている場合、値のパスは Hint に設定されます。 このセクションで説明するように、Option 要素の Hint フィールドとバインドされます。

  • ItemSource: リスト内の選択肢を定義する ListControlItems のコレクション。 ユーザーはこれを Custom に明示的に設定し、このセクションで説明するように Option 要素を使用して文字列値を指定できます。

  • SelectedValue: 現在選択されている値。 これは必須の文字列型プロパティです。 このプロパティは、データ ソースからの文字列データとバインドされます。

イベント:

  • SelectedIndexChanged: イベントは、ドロップダウン ボックスの選択が変更されたときに発生します。

[オプション] :

Options 要素の構造については、「Options 要素の」を参照してください。

  • : 1 つの Options 要素の値は、コントロールがバインドするデータ ソースの有効な入力である任意の文字列に設定できます。

  • Caption: Caption には任意の文字列値を指定できます。

  • ヒント: ヒントには任意の文字列値を指定できます。

:

UocDropDownList コントロールUocDropDownList controlUocDropDownList controlをする

UocDropDownList コントロールの オプション

サンプルを機能させるには、既存の文字列型の属性 スコープ を、RCDC が適用されるカスタム リソースの種類にバインドする必要があります。

次のコード セグメントでは、ドロップダウン リストが生成されます。

<!--Sample for drop-down list control-->
<my:Control my:Name="Scope" my:TypeName="UocDropDownList" my:Caption="{Binding Source=schema, Path=Scope.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Scope}">
     <my:Options>
          <my:Option my:Value="DomainLocal" my:Caption="Domain Local" my:Hint="to secure a local resource (i.e. a file share on your computer)" />
          <my:Option my:Value="Global" my:Caption="Global" my:Hint="to secure resources across your team or division" />
          <my:Option my:Value="Universal" my:Caption="Universal" my:Hint="to use this group across your organization" />
     </my:Options>
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Scope.Required" />
          <my:Property my:Name="ValuePath" my:Value="Value" />
          <my:Property my:Name="CaptionPath" my:Value="Caption" />
          <my:Property my:Name="HintPath" my:Value="Hint" />
          <my:Property my:Name="ItemSource" my:Value="Custom" />
          <my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=Scope, Mode=TwoWay}" />
     </my:Properties>
</my:Control>
<!--End of Sample for drop-down list control-->

UocFileDownload

名前: UocFileDownload

説明: このコントロールにはハイパーリンクが含まれています。 ハイパーリンクをクリックすると、Windows の [ファイルの保存] ページが表示されます。 ユーザーはローカル ドライブにファイルを保存できます。 Internet Explorer でファイル形式をレンダリングできる場合は、[開く] オプションもサポートされます。 このコントロールを使用する場合に推奨されるデータ型は、書式設定された文字列 (XML) とバイナリ型です。

Microsoft Identity Manager 2016 SP1 のこのリリースでは、ユーザーはファイルを開いた Internet Explorer ウィンドウを閉じてから、ページを更新する必要があります。 Internet Explorer ウィンドウを更新した後、ユーザーはダウンロードを開始して、元のウィンドウで同じファイルを保存または再度開くことができます。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • テキスト: ハイパーリンク テキストを定義する省略可能な文字列型の属性です。 ユーザーは、このプロパティの明示的な文字列を指定できます。

  • 値の: これは必須の属性です。 コンテンツをダウンロードするサーバー上の属性バインドを指定します。

  • PromptedFileName: これは省略可能な文字列型の属性です。 これは、ダウンロードしたファイルを保存するときにユーザーに推奨されるファイル名です。

  • ContentType: これは必須の文字列型属性です。 これは、データが保存されるファイルの種類です。 テキストまたはバイナリは、サポートされている 2 つの文字列オプションです。 テキストの場合、戻り値は長い文字列と見なされます。 それ以外の場合、バイナリの場合、戻り値は byte[] と見なされます。 テキストが選択されている場合、ユーザーはオプションとしてサフィックスを追加して、テキストの形式の種類を指定できます。 たとえば、text/xml は有効です。

このコントロールにバインドされている値が空の場合、コントロールに、ダウンロード アクションのトリガーに使用するハイパーリンクがありません。 これは、ダウンロードするものがないためです。

イベント:

  • このコントロールのイベントはありません。

:

UocFileDownload コントロールUocFileDownload controlUocFileDownload controlをする

このサンプル ファイルをアップロードする前に、ユーザーはカスタム リソースの種類と既存の ConfigurationData 属性の間にバインディングを作成する必要があります。

次のコード セグメントでは、ファイル ダウンロード コントロールが生成されます。

<!--Sample dynamic download control-->
<my:Control my:Name="SampleDynamicFileDownloadControl" my:TypeName="UocFileDownload" my:Caption="{Binding Source=schema, Path=ConfigurationData.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ConfigurationData.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=ConfigurationData}">
     <my:Properties>
          <my:Property my:Name="Text" my:Value="Download Dummy xml"/>
          <my:Property my:Name="PromptedFileName" my:Value="DummyXML.xml"/>
          <my:Property my:Name="ContentType" my:Value="text/xml"/>
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ConfigurationData}"/>
     </my:Properties>
</my:Control>
<!--End of dynamic download control -->

UocFileUpload

名前: UocFileUpload

説明: このコントロールには、アップロードするローカル ファイルの場所、ファイルの参照ボタン、アップロード ボタンを表示するテキスト ボックスが含まれています。 エンド ユーザーが [参照] ボタンをクリックすると、Windows の [ファイルを開く] ウィンドウが表示されます。 エンド ユーザーは、アップロードするローカル ドライブ上の 1 つのファイルを選択できます。 ファイルを選択すると、ファイルの場所がテキスト ボックスに表示されます。 [アップロード] ボタンをクリックすると、ファイルがクライアント側のローカル データ ソースにアップロードされます。 ファイルの内容はまだサーバーに送信されていません。 このコントロールを使用する場合に推奨されるデータ型は、書式設定された文字列 (XML) またはバイナリ型です。

アップロードの進行状況や状態は表示されません。 ファイルがローカル データ ソースにアップロードされると、テキスト ボックスはクリアされます。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • 値の: これは必須の属性です。 データのアップロード先サーバー上のスキーマ属性バインドを指定します。

  • ContentType: これは省略可能な文字列型の属性です。 これは、ファイルがサーバーに保存されるデータ型です。 これは、テキストまたはバイナリに設定できます。 プロパティがない場合、既定値は Binary です。

  • MaxFileSize: これは省略可能な文字列型の属性です。 MaxFileSize は、アップロードされるファイル サイズの大きさを定義します。 既定では、プロパティがない場合、最大サイズは 1 メガバイト (MB) です。

  • PromptedForNoValue: これは省略可能な文字列型の属性です。 ファイルがアップロードされていないときにユーザーに表示されるテキストを定義します。

イベント:

  • FileUploaded: このイベントは、ファイルが正常にアップロードされたときに生成されます。

:

UocFileUpload コントロールUocFileUpload controlUocFileUpload controlをする

次のサンプル コードを機能させるには、ABinaryAttribute という名前の新しいバイナリ型属性を作成し、カスタム リソースの種類とこの属性の間に新しいバインドを作成する必要があります。

次のコード セグメントでは、アップロード コントロールが生成されます。

<!--Sample dynamic upload control-->
<my:Control my:Name="SampleDynamicFileUploadControl" my:TypeName="UocFileUpload" my:Caption="{Binding Source=schema, Path=ABinaryAttribute.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ABinaryAttribute.Description, Mode=OneWay}” my:RightsLevel="{Binding Source=rights, Path=ABinaryAttribute}">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABinaryAttribute.Required}"/>
          <my:Property my:Name="ContentType" my:Value="Binary"/>
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ABinaryAttribute, Mode=TwoWay}"/>
     </my:Properties>
</my:Control>
<!--End of dynamic upload control -->

UocFilterBuilder

Name: UocFilterBuilder

説明: これは、ユーザーが MIM 2016 XPath 式をレンダリングできるようにする複雑なコントロールです。 一部の XPath 式はサポートされていません。 フィルター ビルダーの使用方法については、フィルター ビルダーのヘルプを参照してください。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • PermittedObjectTypes: フィルター ビルダーの select ステートメントに表示するリソースの種類の一覧を定義します。 フィルター ビルダーの使用方法については、フィルター ビルダーのヘルプを参照してください。 文字列は ResourceTypeA ResourceTypeB の形式で、各リソースの種類はコンマ ',' で区切られます。

  • : フィルター ビルダーがレンダリングされる値です。 XPath 式を含む文字列型データを持つバインディングのみがサポートされます。 Filter 属性は、このコントロールをバインドするための推奨属性です。

  • PreviewButtonVisible: これは省略可能なブール型プロパティです。 このプロパティが false に設定されている場合、ユーザーには [プレビュー] ボタンが表示されません。 既定値は true に設定されます。 このボタンをリスト ビュー コントロールと組み合わせて使用すると、XPath 式の結果をプレビューできます。

  • ExcludeGroupMembership : これはブール型プロパティです。 このプロパティが true に設定されている場合は、Group オブジェクト<のメンバー >参照属性< (ResourceID など) >使用するフィルターを作成することはできません。 つまり、このプロパティが true に設定されている場合、グループ メンバーシップ ディレクトリを使用するフィルターを作成することはできません。

  • PreviewButtonCaption: これは省略可能な文字列です。 PreviewButtonVisible が true に設定されている場合は、このプロパティを使用してボタンにカスタマイズされたテキストを指定できます。 [プレビュー] ボタンにテキストが表示されます。

イベント:

  • OnFilterChanged: このイベントは、フィルター ビルダーのコンテンツが変更されたときにトリガーされます。

:

UocFilterBuilder コントロールUocFilterBuilder controlUocFilterBuilder controlをする

次のサンプル コードには、UOCLabel コントロール、PermittedObjectTypes を使用した単純なフィルター ビルダー、プレビュー リスト ビューが含まれています。 リスト ビューの ListFilter プロパティとフィルター ビルダーの Value プロパティを同じデータ ソース属性にポイントして、2 つをリンクします。

このサンプル コードを使用する前に、既存の Filter 属性とカスタム リソースの種類の間に新しいバインドを作成します。

<!--Sample filter builder with preview list-->
<my:Control my:Name="ComplexFilterBuilderLabel" my:TypeName="UocLabel" my:ExpandArea="true">
     <my:Properties>
          <my:Property my:Name="Text" my:Value="This is a Filter Builder with preview."/>
     </my:Properties>
</my:Control>
<my:Control my:Name="ComplexFilterBuilder" my:TypeName="UocFilterBuilder" my:RightsLevel="{Binding Source=rights, Path=Filter}" my:ExpandArea="true">
     <my:Properties>
          <my:Property my:Name="PermittedObjectTypes" my:Value="Person,Group" />
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=Filter, Mode=TwoWay}" />
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Filter.Required, Mode=OneWay}" />
     </my:Properties>
</my:Control>
<my:Control my:Name="FilterBuilderwithpreview" my:TypeName="UocListView" my:ExpandArea="true">
     <my:Properties>
          <my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName,ObjectType,AccountName" />
          <my:Property my:Name="EmptyResultText" my:Value="There is no members according to the filter definition." />
       <my:Property my:Name="PageSize" my:Value="10" />
       <my:Property my:Name="ShowTitleBar" my:Value="false" />
       <my:Property my:Name="ShowActionBar" my:Value="false" />
       <my:Property my:Name="ShowPreview" my:Value="false" />
       <my:Property my:Name="ShowSearchControl" my:Value="false" />
       <my:Property my:Name="EnableSelection" my:Value="false" />
       <my:Property my:Name="SingleSelection" my:Value="false" />
       <my:Property my:Name="ItemClickBehavior" my:Value=" ModelessDialog "/>
       <my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}" />
     </my:Properties>
</my:Control>
<!--end of sample filter builder with preview-->

UocHtmlSummary

: UocHtmlSummary

説明: このコントロールを使用して、RCDC ページで概要ページを定義できます。 この概要ページは、エンド ユーザーが要求を送信した後に表示されます。 このコントロールはサマリー グループでのみ使用でき、唯一のコントロールである必要があります。 提供されているサンプル コードを使用することを強くお勧めします。

このコントロールは広範囲にテストされていません。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • ModificationsXml: このプロパティは、構成ヘッダー ObjectDataSource でデルタが定義されている {Binding Source=delta, Path=DeltaXml} として書式設定する必要があります。

  • TransformXsl: このプロパティは {Binding Source=summaryTransformXsl, Path=/} として書式設定され、summaryTransformXsl は構成ヘッダー XmlDataSource で定義されます。

イベント:

  • このコントロールのイベントはありません。

:

このコントロールのサンプルについては、このドキュメントの「グループ化要素」セクションの概要グループ化の例を参照してください。

名前: UocHyperLink

説明: これは単純なハイパーリンク コントロールです。 このコントロールを使用すると、情報をハイパーリンクとして表示できます。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • ObjectReference: これは省略可能な参照型のプロパティです。 このプロパティで定義されている GUID によって有効なリソースが参照されている場合、ハイパーリンクはエンド ユーザーにリソースにアクセスする方法を提供します。 これは NavigateUrl プロパティと相互に排他的です。

  • テキスト: これは省略可能な文字列型のプロパティです。 このプロパティを使用して、ハイパーリンクとして表示されるテキストを定義します。

  • NavigateUrl: これは省略可能な文字列型のプロパティです。 このプロパティを使用して、ハイパーリンクがリンクする完全パス URL を定義します。 これは ObjectReference プロパティと相互に排他的です。

イベント:

  • このコントロールのイベントはありません。

:

UocHyperLink コントロールUocHyperLink controlUocHyperLink controlをする

これをリンクするには、リソースの有効な GUID が必要です。 この場合、2 番目のハイパーリンクは有効な GUID で生成されます。 1 つ目は任意の Web サイトです。

次のコード セグメントでは、リダイレクトハイパーリンクが生成されます。

<!--Sample for a hyperlink that redirects page.-->
<my:Control my:Name="RedirectHyperlink" my:TypeName="UocHyperLink" my:Caption="Redirect Hyperlink" my:Description="This is a hyperlink that takes you to other pages.">
     <my:Properties>
          <my:Property my:Name="NavigateUrl" my:Value="http://www.microsoft.com"/>
          <my:Property my:Name="Text" my:Value="Microsoft Home Page"/>
     </my:Properties>
</my:Control>
<!--End of Sample for a hyperlink that redirect page-->

次のコード セグメントは、リソースを参照するハイパーリンクを生成します。 明示的な参照は、式 {Binding Source=object, Path=Creator} に置き換えて、これをデータ ソースにバインドできます。 これは、リソースのマネージャーが存在し、参照型の値である場合にのみ有効です。

<!--Sample for a hyperlink that reference object-->
<my:Control my:Name="ReferenceHyperlink" my:TypeName="UocHyperLink" my:Caption="Reference Hyperlink" my:Description="This is a hyperlink gives you an object view of the reference object">
     <my:Properties>
          <my:Property my:Name="ObjectReference" my:Value="e4e048b1-9e43-415e-806c-cf44c429c34c"/>
          <my:Property my:Name="Text" my:Value="View a group in FIM 2010."/>
     </my:Properties>
</my:Control>
<!--End of Sample for a hyperlink that reference object-->

UocIdentityPicker

名前: UocIdentityPicker

説明: このコントロールは、省略可能な [解決] ボックスと [参照] ウィンドウで構成されます。 オプションの [解決] ボックスは、ID を入力するためのオプションのテキスト ボックス、ID を解決するための [解決] ボタン、ポップアップの [参照] ウィンドウを表示する [参照] ボタンで構成されます。 [参照] ウィンドウを使用すると、ユーザーはリスト ビュー コントロールを使用して ID を選択できます。 [参照] ウィンドウで選択した ID が [解決] ボックスに反映されます。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • UsageKeywords: これは省略可能な文字列プロパティです。 リソース ピッカーで使用する検索スコープの一覧を定義するには、SearchScopeConfiguration 構造体でサポートされている使用キーワードの一覧を指定します。各キーワードはアポストロフィ (') で区切られます。

  • フィルター: これは省略可能な文字列プロパティです。 ユーザーは、定義されたスコープ内に収まる項目のみを表示するようにリソース ピッカーのスコープを設定する XPath 式を提供します。 このプロパティは UsageKeywords プロパティと相互に排他的です。 検索範囲を適用すると、このプロパティは無効になります。

  • ResultObjectType: これは省略可能な文字列プロパティです。 リソースの種類は、ポップアップ ダイアログ ボックスの一覧でリソースをレンダリングするために使用されます。 これは、ID ピッカーがフィルターによって返されるリソースの種類を識別し、それに応じてデータをレンダリングするために、フィルターと共に使用されます。 このプロパティは UsageKeywords プロパティと相互に排他的です。 検索範囲を適用しても、効果はありません。 このプロパティで受け入れられる文字列は、単一の有効なリソースの種類の名前 (Person など) です。 フィルターが複数のリソースの種類を返すと予想される場合は、リソースが使用されます。

  • PreviewTitle: これは、リスト ビューで使用されるプレビュー タイトルです。 このプロパティの詳細については、「UocListView」セクションを参照してください。

  • ListViewTitle: これは省略可能な文字列プロパティです。 このプロパティを使用すると、リスト ビューの上に表示されるテキストをタイトルとして定義できます。

  • 値の: これは省略可能な文字列プロパティです。 これをスキーマ属性にバインドして、値をデータ ソースに接続することをお勧めします。

  • モードの: これは省略可能な文字列プロパティです。 このプロパティを使用して、ID ピッカーで 1 つの値を選択できるか、複数の ID を選択できるかを定義します。 SingleResult と MultipleResult は、許可される値です。 既定では、SingleResult に設定されています。

  • ObjectTypes: これは省略可能な文字列型プロパティです。 エンド ユーザーが [ID ピッカーの解決] ボックスでエントリを解決できるリソースの種類の一覧を定義できます。 リストは、コンマ ',' で区切られたリソースの種類の名前の一覧で構成されます。

  • AttributesToSearch: これは省略可能な文字列型のプロパティです。 ID ピッカーでアイテムを解決するために使用する属性の一覧を定義できます。ここで、リストはスキーマ属性の一覧であり、コンマ ',' で区切られています。 たとえば、AttributesToSearch が DisplayName, Aliasに設定されている場合、ユーザーは DisplayName = \<search value\> または Alias=\<search value\>を使用してアイテムを検索できます。 ここで入力する属性名は、Value プロパティで指定されているデータ ソースのターゲット リソースの種類に対して有効な属性である必要があります。 ターゲット リソースの種類は、ObjectTypes フィールドにあります。 すべての属性は、ObjectTypes フィールドで引用されている特定のリソースの種類で有効である必要があります。

  • ColumnsToDisplay: これは省略可能な文字列型のプロパティです。 ユーザーは、コンマ ',' で区切られたスキーマ属性名の一覧を提供します。 ここで定義されている属性は、ID ピッカーのリスト ビューの列を構成します。

  • Rows: これは省略可能な整数プロパティです。 モードが MultipleResult に設定されている場合にのみ機能します。 このプロパティを使用して、[解決] テキスト ボックスの高さを文字単位で指定したサイズに設定します。

  • MainSearchScreenText: これは省略可能な文字列型のプロパティです。 これは、[参照] ウィンドウで検索の実行中に表示されるカスタマイズされたテキストです。

イベント:

  • SelectedObjectChanged: このイベントは、ユーザーが選択したリソースを変更したときに生成されます。

:

SingleResult モードの UocIdentityPicker コントロールを

このサンプルを機能させるには、Manager 属性と、この XML が適用されるカスタム リソースの種類の間に新しいバインドを作成する必要があります。

次のコード セグメントでは、RCDC の一部として Filter プロパティと ResultObjectType プロパティを使用して、SingleResult モードで ID ピッカーを生成します。

<!--Sample for a single-selection identity picker using Filter and Result Object Type-->
<my:Control my:Name="SingleSelectionIdentityPicker" my:TypeName="UocIdentityPicker" my:Caption="A Single Selection Identity Picker" my:Description="The user is allowed to select only one entry here." my:RightsLevel="{Binding Source=rights, Path=Manager}">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Manager.Required}"/>
          <my:Property my:Name="Mode" my:Value="SingleResult" />
          <!--Columns displayed in list view in pop-up window-->
          <my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName, ObjectType" />
          <!--Identities will be resolved against following attribute in the resolve textbox when resolve button is clicked.-->
          <my:Property my:Name="AttributesToSearch" my:Value="DisplayName, AccountName" />
          <!--single valued reference type attribute is used to bind the control-->
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=Manager , Mode=TwoWay}" />
          <!--Scoping the list explicitly to All Persons name contains letter "e"-->
          <my:Property my:Name="Filter" my:Value="/Person[contains(JobTitle, 'Manager')]"/>
          <!--Result object type specify the type is Person-->
          <my:Property my:Name="ResultObjectType" my:Value="Person"/>
          <my:Property my:Name="ListViewTitle" my:Value="Select only one entry" />
          <my:Property my:Name="PreviewTitle" my:Value="Entry selected:" />
     </my:Properties>
</my:Control>
<!--End of sample for a single-selection identity picker.-->

次の図は、MultipleResult モードの ID ピッカーを示しています。

MultipleResult モードの UocIdentityPicker コントロールを

このサンプル コードを機能させるには、ExplicitMember 属性 (複数値の参照属性) をカスタム リソースの種類にバインドする必要があります。 UsageKeyword プロパティが Person と Group に設定された検索範囲を作成します。

次のコード セグメントは、MultipleResult モードで ID ピッカーを作成します。

<!--Sample for a multiselection Identity Picker uses Search Scope-->
<my:Control my:Name="multiSelectionIdentityPicker" my:TypeName="UocIdentityPicker" my:Caption="A multi Selection Identity Picker" my:Description="The user is allowed to select more than one entry here" my:RightsLevel="{Binding Source=rights, Path=ExplicitMember}">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ExplicitMember.Required}"/>
          <my:Property my:Name="Mode" my:Value="MultipleResult" />
          <my:Property my:Name="Rows" my:Value="10" />
          <!--There are existing search scopes that has key word "Person" and "Group" use both sets of search scopes here.-->
          <my:Property my:Name="UsageKeywords" my:Value="Person,Group"/>
          <!--Columns displayed in list view in pop-up window-->
          <my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName, ObjectType" />
          <!--Identities will be resolved against following attribute in the resolve textbox when resolve button is clicked.-->
          <my:Property my:Name="AttributesToSearch" my:Value="DisplayName, AccountName" />
          <!--multi valued reference type attribute is used to bind the control-->
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ExplicitMember , Mode=TwoWay}" />
          <my:Property my:Name="ResultObjectType" my:Value="Resource"/>
          <my:Property my:Name="ListViewTitle" my:Value="Select multiple entries" />
          <my:Property my:Name="PreviewTitle" my:Value="Entries selected" />
     </my:Properties>
</my:Control>
<!--End of sample for a multiselection Identity Picker.-->

UocLabel

Name: UocLabel

説明: これは、単純な読み取り専用のテキスト ラベル コントロールです。 読み取り専用データを表示するには、このコントロールを使用することをお勧めします。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • テキスト: これは文字列型の属性です。 このプロパティを定義するには、明示的な文字列値を指定するか、データ ソースとバインドします。 このプロパティの値を割り当てるサンプル バインドは{Binding Source=object,Path=<有効な属性名>です。

UocLabel コントロールのサンプルについては、「単純なコントロールのサンプル」セクションの単純なコントロールを参照してください。

UocListView

: UocListView

説明: これは高度なリスト ビュー コントロールです。 単純なリスト ビュー、オプションの単純検索、オプションの高度な検索コントロール、オプションの選択プレビュー ボックス、アクション ボタン バーで構成されます。 オプションの単純検索は、検索範囲と単純な検索テキスト ボックスで構成されます。 高度な検索コントロールはフィルター ビルダーです。 リスト ビューには、事前レンダリングされたリソースの一覧が表示されます。 また、このコントロールの検索コントロールからの検索結果を表示することもできます。 アクション ボタン バーは、リスト ビューの選択に基づいて実行できるアクションを定義します。 [選択プレビュー] ボックスには、リスト ビューから選択されている項目が表示されます。

重要

UocListView は、単一値参照属性では機能しません。 複数値の参照属性でのみ使用できます。 単一値参照属性については、このドキュメントの UocIdentityPicker を参照してください。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • SelectedValue: これは、GUID 形式の文字列の一覧を受け入れる複数値の参照属性にバインドされる、省略可能な文字列型のプロパティです。

  • PageSize: これは省略可能な整数プロパティです。 ユーザーは、リスト ビュー コントロール内の 1 つのページに収まるエントリの数を指定できます。 既定値は 10 エントリです。 正の整数は有効です。

  • UsageKeyword: これは省略可能な文字列型のプロパティです。 ユーザーは、リスト ビュー検索コントロールで使用される検索スコープを定義するキーワードのリストを指定できます。 FIM 2010 サーバーには検索範囲リソースがあります。 UsageKeyword と呼ばれる SearchScopeConfiguration 構造体の属性は、一連の検索スコープをグループ化するために使用されます。 リスト ビューでは、そのキーワードの一覧が使用されます。 各キーワードはコンマ (,) で区切られます。 これは、このリスト ビューに表示する対応する検索範囲で使用される使用法キーワードです。 これは、ShowSearchControl プロパティが true に設定されている場合にのみ有効です。

  • SearchControlAutoPostback: これは省略可能なブール型プロパティです。 検索がトリガーされたときに自動ポストバックを実行するには、このプロパティの値を true に設定します。 既定では、SearchControlAutoPostback は false に設定されています。

  • EmptyResultText: これは省略可能な文字列型のプロパティです。 既定では、[項目なし] に設定されていますが、任意の文字列値に設定できます。 このテキストは、検索結果が空の場合に表示されます。

  • ButtonHeight: これは省略可能な整数型のプロパティです。 このプロパティの値を任意の正の整数値に設定します。 このプロパティは、アクション バーのボタンの高さをピクセル単位で定義します。 既定値は 32 ピクセルです。

  • ButtonWidth: これは省略可能な整数型のプロパティです。 このプロパティの値を任意の正の整数値に設定します。 このプロパティは、アクション バーのボタンの幅をピクセル単位で定義します。 既定値は 32 ピクセルです。

  • CaptionImageMaxHeight: これは省略可能な整数型のプロパティです。 このプロパティの値を任意の正の整数に設定します。 このプロパティは、オプションのキャプションのアイコンの最大高さを定義します。 既定値は 32 ピクセルです。

  • CaptionImageMaxWidth: これは省略可能な整数型のプロパティです。 このプロパティの値を任意の正の整数に設定します。 このプロパティは、オプションのキャプションのアイコンの最大幅を定義します。 既定値は 32 ピクセルです。

  • CaptionImageUrl: これは省略可能な文字列型のプロパティです。 このプロパティは、キャプション イメージとして表示されるイメージにリンクする URL を定義します。

  • PreviewTitle: これは省略可能な文字列型のプロパティです。 このプロパティを使用して、選択プレビュー ボックスの上部に表示されるテキストを定義します。

  • EnableSelection: これは省略可能なブール型のプロパティです。 このプロパティを使用して、リスト ビューが選択モードかどうかを定義します。 リスト ビューが選択モードの場合、リスト ビューの左端の列にチェック ボックスの列が表示され、選択プレビュー ボックスがリスト ビューの下部に表示されます。 このプロパティの既定値は true に設定されています。

  • SingleSelection: これは省略可能なブール型のプロパティです。 リスト ビューの選択モードがオンになっている場合、この値を true に設定すると、エンド ユーザーはリストから 1 つの項目のみを選択できるようになります。 既定では、このプロパティの値は false に設定されます。 つまり、既定では、エンド ユーザーは一覧から複数の項目を選択できます。

  • RedirectUrl: これは省略可能な文字列型のプロパティです。 このプロパティを使用して、ハイパーリンクが設定されたアイテムがリスト内でクリックされたときにリダイレクトするページを指定します。 この URL には、実行時に実際の値に置き換えられるプレースホルダーを含めることができます。 プレースホルダーは次のとおりです。

    • {0} objectType
    • objectID の {1}
    • displayName の {2}
  • ShowTitleBar: これは省略可能なブール型のプロパティです。 このプロパティを使用して、タイトル バーを表示するかどうかを指定します。 このプロパティの既定値は false です。

  • ShowActionBar: これは省略可能なブール型のプロパティです。 このプロパティを使用して、アクション バー領域を表示するかどうかを指定します。 このプロパティの既定値は true です。

  • ShowPreview: これは省略可能なブール型のプロパティです。 プレビュー領域を表示するかどうかを指定するには、このプロパティを使用します。 このプロパティの既定値は true です。

  • ShowSearchControl: これは省略可能なブール型のプロパティです。 このプロパティを使用して、検索コントロールを表示するかどうかを指定します。 このプロパティの既定値は true です。

  • ResultObjectType: これは省略可能な文字列型のプロパティです。 このプロパティを使用して、検索結果の予想されるオブジェクトの種類を指定します。 このプロパティの既定値は Resource です。 検索結果に複数のリソースの種類が含まれている場合は、この値を Resource として指定する必要があります。

  • ColumnsToDisplay: これは省略可能なプロパティです。 リスト ビューを列として表示する属性を指定するには、このプロパティを使用します。 このプロパティの既定値は DisplayName、ResourceType です。 各列は、属性のシステム名で表されます。 各列はコンマ ',' で区切られます。 リスト ビューが選択モードで使用されている場合は、このプロパティの値を指定する必要はありません。 選択モードでは、列の設定は、現在選択されている検索スコープの SearchScopeColumn 属性から取得されます。

  • ListFilter: これは省略可能な文字列型のプロパティです。 これは、リスト ビューのレンダリングに使用される xpath であり、ShowSearchControl プロパティが false に設定されている場合にのみ有効です。 この値を指定すると、リスト ビューはクエリにこのプロパティ値を使用し、リスト ビューは選択モードではありません。 フィルターは、リソースの文字列属性にバインドできます。

    <my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}"/>

    または、定義済みの環境変数を含む文字列を指定します。

    <my:Property my:Name="ListFilter" my:Value="/Approval[Request=''%ObjectID%'']"/>

  • TargetAttribute: これは古いプロパティです。 その値は、複数値を持つ参照属性のシステム名である必要があります。 このプロパティはこれ以上使用しないことをお勧めします。 たとえば、グループ管理では、次を使用する代わりに、次のコマンドを使用します。

    <my:Property my:Name="TargetAttribute" my:Value="ExplicitMember"/>

    使用:

    <my:Property my:Name=”ListFilter” my:Value=”/Group[ObjectID=’%ObjectID%’]/ExplicitMember”/>

  • ItemClickBehavior: これは省略可能な文字列型のプロパティです。 このプロパティを使用して、リスト ビュー項目をクリックしてサーバー ポストバックをトリガーするか、アイテムの詳細ビューを表示するかを指定します。 ModelessDialog と Server の 2 つのオプション値がサポートされています。 既定値は ModelessDialog です。

  • SearchOnLoad: これは、リスト ビュー コントロールが読み込み時にクエリを実行するかどうかを指定する、省略可能なブール型のプロパティです。 このプロパティは、リスト ビューが選択モードの場合にのみ適用されます。 このプロパティの既定値は、true です。 ユーザーが通常、意味のある結果を得るために検索にテキストを入力することが予想される場合は、無効にすることができます。 この場合、リスト ビューには最初に、検索の実行方法をユーザーに伝えるメッセージが表示されます。 テキストは、次のプロパティでカスタマイズできます。

  • MainSearchScreenText: この省略可能な文字列型プロパティは、SearchOnload が true に設定されている場合にのみ適用されます。 このプロパティを使用すると、リスト ビューが自動的に検索されない場合にリスト ビューの中央に表示されるテキストをカスタマイズできます。 このプロパティの既定値は、前述のように検索を使用してリソースを検索することです。 値を指定して、テキストをシナリオにより関連性を高めることができます。

  • SubSearchScreenText: この省略可能な文字列型プロパティは、MainSearchScreenText プロパティの後に表示されるテキストをカスタマイズするために使用されます。 通常、リスト ビューの使用方法に関する追加の手順を追加する場合を除き、このプロパティの値を指定する必要はありません。

イベント:

  • このコントロールのイベントはありません。

:

リスト ビューと UocFilterBuilder コントロールをプレビュー リストとして使用する方法の例については、このドキュメントの前の UocFilterBuilder サンプルを参照してください。 UocListView は、フィルター ビルダーなしでも使用できます。

UocNumericBox

名前: UocNumericBox

説明: これは整数値のみを受け取る単純なテキスト ボックスです。 このコントロールは、読み取り専用モードと更新可能モードの両方をサポートします。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • MaxValue: これは省略可能な整数型のプロパティです。 このプロパティを使用して、コントロールのクライアント側検証を定義します。 エンド ユーザーが入力する値がこの値を超えることはできません。 明示的な整数を入力するか、{Binding Source=schema, Path=IntegerMaximum} を使用してデータ ソースの整数データとバインドできます。

  • MinValue: これは省略可能な整数型のプロパティです。 このプロパティを使用して、コントロールのクライアント側検証を定義します。 エンド ユーザーが入力する値は、この値より小さくすることはできません。 明示的な整数を入力するか、{Binding Source=schema, Path=IntegerMinimum} を使用してデータ ソースの整数データとバインドできます。

  • DefaultValue: これは省略可能な整数型のプロパティです。 コントロールを使用して新しいデータを作成する場合は、このプロパティを使用してコントロールの既定値を定義します。 この値は、静的整数にのみ明示的に設定できます。

  • Value: これは省略可能な整数型のプロパティです。 これをデータ ソースの整数型データとバインドすると、ページが読み込まれると、その属性の値が表示され、送信後にデータ ソースに保存されます。

イベント:

  • TextChanged: このイベントは、コントロール内の現在の値が変更されたときに生成されます。

:

UocNumericBox コントロールUocNumericBox controlUocNumericBox controlをする

次のサンプル コードでは、最初の数値ボックスが生成されます。 数値ボックスは、データ ソースまたはスキーマ情報に接続されていません。

<!--Sample for an explicit Numeric Box-->
<my:Control my:Name="SampleExplicitNumericBox" my:TypeName="UocNumericBox" my:Caption="An Explicit NumericBox" my:Description="This is a dummy numeric box that is not linked with data source.">
     <my:Properties>
          <my:Property my:Name="MinValue" my:Value="1"/>
          <my:Property my:Name="MaxValue" my:Value="100"/>
          <my:Property my:Name="DefaultValue" my:Value="1"/>
     </my:Properties>
</my:Control>
<!--End of sample for an explicit Numeric Box.-->

次のサンプル コードでは、2 番目の数値ボックスが生成されます。

このサンプルを機能させるには、まず AnIntegerAttribute という名前の新しい整数型属性を作成し、それをカスタム リソースの種類にバインドする必要があります。

<!--Sample for a dynamically rendered numeric box-->
<my:Control my:Name="SampleDynamicNumericBox" my:TypeName="UocNumericBox" my:Caption="{Binding Source=schema, Path=AnIntegerAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=AnIntegerAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=AnIntegerAttribute}">
     <my:Properties>
          <my:Property my:Name="MaxValue" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.IntegerMaximum}"/>
          <my:Property my:Name="MinValue" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.IntegerMinimum}"/>
          <my:Property my:Name="DefaultValue" my:Value="1"/>
          <my:Property my:Name="Value" my:Value="{Binding Source=object, Path=AnIntegerAttribute, Mode=TwoWay}"/>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.Required}"/>
     </my:Properties>
</my:Control>
<!--End of sample for a dynamically numeric box.-->

UocPictureBox

: UocPictureBox

説明: このコントロールは、図のバイナリ型データをレンダリングするために使用されます。 このコントロールはバイナリ型データと共に使用することをお勧めします。 画像は、指定された画像 URL、バイナリ型データ、または画像型データを含む属性ソースによってレンダリングできます。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • ImageUrl: これは省略可能な文字列型のプロパティです。 ターゲット画像の URL を入力します。

  • MaxHeight: これは省略可能な文字列型プロパティです。 ピクセル単位でレンダリングするイメージの最大高さを定義します。

  • maxWidth : これは省略可能な文字列型のプロパティです。 レンダリングするイメージの最大幅をピクセル単位で定義します。

  • ImageData: これはバイナリ型のプロパティです。 このプロパティを使用して、データ ソースを表示されたイメージにバインドします。 バインドされたデータ ソースはバイナリである必要があります。 また、このフィールドを使用して、byte[] 形式のデータを指定して画像を明示的に設定することもできます。

  • ImageResource: これは省略可能なバイナリ型のプロパティです。

  • AlternativeText: これは省略可能な文字列型のプロパティです。 このプロパティは、画像を表示できない場合に代替テキストとして表示されます。

イベント:

  • このコントロールのイベントはありません。

:

このサンプルを使用するには、既存のイメージ データがコントロールとバインドされている必要があります。

次のコード セグメントは、データ ソースとコントロールをバインドするピクチャ ボックス コントロールを生成します。

<!--Sample for a Picture Box control binding with a data source-->
<my:Control my:Name="SamplePictureBoxImageData" my:TypeName="UocPictureBox" my:RightsLevel="{Binding Source=rights, Path=Photo}">
     <my:Properties>
          <my:Property my:Name="MaxHeight" my:Value="100" />
          <my:Property my:Name="MaxWidth" my:Value="100" />
          <my:Property my:Name="ImageData" my:Value="{Binding Source=object, Path=Photo}" />
     </my:Properties>
</my:Control>
<!--End of Sample for a Picture Box control-->

次のコード セグメントは、URL イメージをコントロールにバインドする画像ボックス コントロールを生成します。

<!--Sample for a Picture Box control bind with explicit URL-->
<my:Control my:Name="SamplePictureBoxImageUrl" my:TypeName="UocPictureBox">
     <my:Properties>
          <my:Property my:Name="MaxHeight" my:Value="100" />
          <my:Property my:Name="MaxWidth" my:Value="100" />
          <my:Property my:Name="ImageUrl" my:Value="http://www.microsoft.com/dummypicture.jpg" />
     </my:Properties>
</my:Control>
<!--End of Sample for a Picture Box control-->

UocRadioButtonList

Name: UocRadioButtonList

説明: これは単純なオプション ボタンリストです。 この一覧では、選択肢は相互に排他的です。 このコントロールは、ユーザーが 5 つ以下のオプションから選択できる場合に推奨されます。 それ以外の場合は、UOCListView をお勧めします。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • ValuePath: 値のパスが [値] に設定されます。 このセクションで説明するように、Option 要素の Value フィールドとバインドされます。

  • CaptionPath: 値のパスは Caption に設定されます。 このセクションで説明するように、Option 要素の Caption フィールドにバインドされます。

  • HintPath: 値のパスが Hint に設定されています。 このセクションで説明するように、Option 要素の Hint フィールドとバインドされます。

  • SelectedValue: 現在選択されている値。 これは必須の文字列型プロパティです。 このプロパティは、データ ソースからの文字列データとバインドされます。

イベント:

  • SelectedIndexChanged: 選択したラジオ ボタンが変更されたときにイベントが発生します。

  • CheckedChanged: ラジオ ボタンの状態が変更されると、このイベントが生成されます。

[オプション] :

このコントロールのオプションとして要素 オプションは 2 つだけです。 Options 要素の構造については、「Options 要素の」を参照してください。

  • : 1 つの Option 要素の Value フィールドを True または False に設定する必要があります。

  • Caption: 任意の文字列値を指定できます。

  • ヒント: 任意の文字列値を指定できます。

:

UocRadioButtonList コントロールUocRadioButtonList controlUocRadioButtonList controlをする

このサンプルを機能させるには、新しいブール型属性 ABooleanAttribute を作成し、それをカスタム リソースの種類にバインドする必要があります。

次のコード セグメントでは、オプション ボタンリストが作成されます。

<!--Sample for option button list control-->
<my:Control my:Name="SampleRadioButtonList" my:TypeName="UocRadioButtonList" my:Caption="{Binding Source=schema, Path=ABooleanAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=ABooleanAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=ABooleanAttribute}">
     <my:Options>
          <my:Option my:Value="False" my:Caption="Set Value To False" my:Hint="By selecting this option, you are setting the value of the attribute to false." />
          <my:Option my:Value="True" my:Caption="Set Value To True" my:Hint="By selecting this option, you are setting the value of the attribute to true." />
     </my:Options>
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABooleanAttribute.Required}" />
          <my:Property my:Name="ValuePath" my:Value="Value" />
          <my:Property my:Name="CaptionPath" my:Value="Caption" />
          <my:Property my:Name="HintPath" my:Value="Hint" />
          <my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=ABooleanAttribute, Mode=TwoWay}" />
     </my:Properties>
</my:Control>
<!--End of Sample for option button list control-->

UocSimpleRadioButton

名前: UocSimpleRadioButton

説明: これは、単純なオプション ボタン コントロールです。 このコントロールの使用は、単純なチェック ボックスに似ています。 2 つのオプション ボタンがあり、テキストのラベル付けと並べて表示されます。 ブール型データにコントロールをバインドすることをお勧めします。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • TrueText: これは省略可能な文字列型のプロパティです。 これは、オプション ボタンが選択されたときに表示されるテキストです。

  • FalseText: これは省略可能な文字列型のプロパティです。 これは、オプション ボタンが選択されていない場合に表示されるテキストです。

  • SelectedItem: これは省略可能なブール型のプロパティです。 この値は、オプション ボタンが選択されていることを示します。 これは、データ ソースからのブール型データとバインドできます。 既定値は false に設定されます。

イベント:

  • CheckedChanged: オプション ボタンの状態が選択された状態から選択されていない状態に変わるとき、またはその逆に、この信号が出力されます。

:

UocSimpleRadioButton コントロールUocSimpleRadioButton controlUocSimpleRadioButton controlの

サンプルを機能させるには、新しいブール属性 ABooleanAttribute を作成し、それをカスタム リソースの種類にバインドする必要があります。 RCDC データは、同じカスタム リソースの種類に適用されます。

次のコード セグメントでは、オプション ボタンが生成されます。

<!--Sample for simple option button control-->
<my:Control my:Name="SampleSimpleRadioButton" my:TypeName="UocSimpleRadioButton" my:Caption="{Binding Source=schema, Path=ABooleanAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=ABooleanAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=ABooleanAttribute}">
     <my:Properties>
          <my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABooleanAttribute.Required}" />
          <my:Property my:Name="FalseText" my:Value="False"/>
          <my:Property my:Name="TrueText" my:Value="True"/>
          <my:Property my:Name="SelectedItem" my:Value="{Binding Source=object, Path=ABooleanAttribute, Mode=TwoWay}" />
     </my:Properties>
</my:Control>
<!--End of Sample for simple option button control-->

UocTextBox

名前: UocTextBox

説明: 文字列型の入力をサポートする単純なテキスト ボックスです。 このコントロールを使用して、文字列型データにバインドすることをお勧めします。

[プロパティ] :

  • すべての共通プロパティ: これらのプロパティの詳細については、「共通プロパティを参照してください。

  • MaxLength: これは省略可能な整数型の属性です。 このプロパティは、文字列入力の最大長を指定します。 このプロパティの既定値は 128 文字です。

  • テキスト: これは省略可能な文字列型のプロパティです。 これは、テキスト ボックスに表示されるテキストです。 コントロールの初期読み込み時にテキスト ボックスに表示される明示的な文字列を定義したり、文字列型のスキーマ属性にバインドしたりできます。

  • : これは省略可能な整数型のプロパティです。 このプロパティは、テキスト ボックスの高さを文字単位で定義します。 既定値は 1 文字です。

  • : これは省略可能な整数型のプロパティです。 このプロパティは、テキスト ボックスの幅を文字単位で定義します。 既定値は 20 文字です。

  • ラップ: これは省略可能なブール型のプロパティです。 このプロパティの値を true に設定すると、ユーザーはテキスト ボックスでワード ラップ機能を有効にします。 このプロパティの既定値は true に設定されています。

  • UniquenessValidationXPath: これは省略可能な文字列型プロパティです。 有効な FIM XPath フィルター式を受け取り、ユーザーが入力した値が、フィルターのスコープ内にあるリソース内で一意であることを確認します。 たとえば、FIM サービス DB 内のすべてのメールが有効なセキュリティ グループ内でユーザーが要求した表示名が一意であることを確認するには、XPath /Group[DisplayName=’%VALUE%’ and Type=’MailEnabledSecurity’を使用します。 検証アクションは、ユーザーがページを離れると実行されます。 このプロパティは、リソースを作成するために RCDC でのみサポートされます。

  • UniquenessErrorMessage: これは省略可能な文字列型のプロパティです。 この文字列は、UniquenessValidationXPath 検証が失敗した場合にエラー メッセージを表示するために使用され、明示的なテキストまたは文字列リソース変数を指定できます。 このプロパティが指定されていない場合、失敗した検証の既定のエラー メッセージは "%VALUE% 既に存在します。 別のものを試してみてください。

イベント:

  • TextChanged: このイベントは、テキスト ボックス内のテキストが変更されたときに生成されます。

:

このコントロールの完全なサンプルについては、「単純なコントロールのサンプル」セクションを参照してください。


付録 A: 既定の XSD スキーマ

このセクションでは、Microsoft Identity Manager 2016 SP1 で提供されるすべての既定の RCDC の完全な XSD スキーマを示します。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema targetNamespace="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:attribute name="TypeName" type="my:requiredString"/>
    <xsd:attribute name="Name" type="my:requiredAlphanumericString"/>
    <xsd:attribute name="Parameters" type="xsd:string"/>
    <xsd:attribute name="DisplayAsWizard" type="xsd:boolean"/>
    <xsd:attribute name="Caption" type="xsd:string"/>
    <xsd:attribute name="AutoValidate" type="xsd:boolean"/>
    <xsd:attribute name="Enabled" type="xsd:string"/>
    <xsd:attribute name="Visible" type="xsd:string"/>
    <xsd:attribute name="IsSummary" type="xsd:boolean"/>
    <xsd:attribute name="IsHeader" type="xsd:boolean"/>
    <xsd:attribute name="HelpText" type="xsd:string"/>
    <xsd:attribute name="Link" type="xsd:string"/>
    <xsd:attribute name="Description" type="xsd:string"/>
    <xsd:attribute name="ExpandArea" type="xsd:boolean"/>
    <xsd:attribute name="Hint" type="xsd:string"/>
    <xsd:attribute name="AutoPostback" type="xsd:string"/>
    <xsd:attribute name="RightsLevel" type="my:requiredString"/>
    <xsd:attribute name="Value" type="xsd:string"/>
    <xsd:attribute name="Handler" type="my:requiredString"/>
    <xsd:attribute name="ImageUrl" type="xsd:string"/>
    <xsd:attribute name="RedirectUrl" type="xsd:string"/>
    <xsd:attribute name="ClickBehavior" type="xsd:string"/>
    <xsd:attribute name="EnableMode" type="xsd:string"/>
    <xsd:attribute name="ValueType" type="xsd:string"/>
    <xsd:attribute name="Condition" type="xsd:string"/>
    <xsd:element name="ObjectControlConfiguration">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:ObjectDataSource" minOccurs="0" maxOccurs="32"/>
                <xsd:element ref="my:XmlDataSource" minOccurs="0" maxOccurs="32"/>
                <xsd:element ref="my:Panel"/>
                <xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attribute ref="my:TypeName"/>
            <xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="ObjectDataSource">
        <xsd:complexType>
            <xsd:sequence/>
            <xsd:attribute ref="my:TypeName"/>
            <xsd:attribute ref="my:Name"/>
            <xsd:attribute ref="my:Parameters"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="XmlDataSource">
        <xsd:complexType  mixed="true">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
      </xsd:sequence>
      <xsd:attribute ref="my:Name"/>
      <xsd:attribute ref="my:Parameters"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Panel">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Grouping" minOccurs="1" maxOccurs="16"/>
            </xsd:sequence>
            <xsd:attribute ref="my:Name"/>
            <xsd:attribute ref="my:DisplayAsWizard"/>
            <xsd:attribute ref="my:Caption"/>
            <xsd:attribute ref="my:AutoValidate"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Grouping">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Help" minOccurs="0"  maxOccurs="1"/>
                <xsd:element ref="my:Control" minOccurs="1" maxOccurs="256"/>
                <xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attribute ref="my:Name"/>
            <xsd:attribute ref="my:Caption"/>
            <xsd:attribute ref="my:Description"/>
            <xsd:attribute ref="my:Enabled"/>
            <xsd:attribute ref="my:Visible"/>
            <xsd:attribute ref="my:IsHeader"/>
            <xsd:attribute ref="my:IsSummary"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Help">
        <xsd:complexType>
            <xsd:sequence/>
            <xsd:attribute ref="my:HelpText"/>
            <xsd:attribute ref="my:Link"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Control">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Help" minOccurs="0"  maxOccurs="1"/>
                <xsd:element ref="my:CustomProperties" minOccurs="0"  maxOccurs="1"/>
                <xsd:element ref="my:Options" minOccurs="0"  maxOccurs="1"/>
                <xsd:element ref="my:Buttons" minOccurs="0"  maxOccurs="1"/>
                <xsd:element ref="my:Properties" minOccurs="0"  maxOccurs="1"/>
                <xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
            </xsd:sequence>
            <xsd:attribute ref="my:Name"/>
            <xsd:attribute ref="my:TypeName"/>
            <xsd:attribute ref="my:Caption"/>
            <xsd:attribute ref="my:Enabled"/>
            <xsd:attribute ref="my:Visible"/>
            <xsd:attribute ref="my:Description"/>
            <xsd:attribute ref="my:ExpandArea"/>
            <xsd:attribute ref="my:Hint"/>
            <xsd:attribute ref="my:AutoPostback"/>
            <xsd:attribute ref="my:RightsLevel"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="CustomProperties">
        <xsd:complexType mixed="true">
            <xsd:sequence>
                <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##targetNamespace" processContents="lax"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Options">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute ref="my:ValueType"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Option">
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute ref="my:Value"/>
                    <xsd:attribute ref="my:Caption"/>
                    <xsd:attribute ref="my:Hint"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Buttons">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Button" minOccurs="1" maxOccurs="8"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Button">
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute ref="my:Name"/>
                    <xsd:attribute ref="my:Caption"/>
                    <xsd:attribute ref="my:Hint"/>
                    <xsd:attribute ref="my:ImageUrl"/>
                    <xsd:attribute ref="my:ClickBehavior"/>
                    <xsd:attribute ref="my:RedirectUrl"/>
                    <xsd:attribute ref="my:Enabled"/>
                    <xsd:attribute ref="my:Visible"/>
                    <xsd:attribute ref="my:EnableMode"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Properties">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Property" minOccurs="1" maxOccurs="32"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Property">
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute ref="my:Name"/>
                    <xsd:attribute ref="my:Value"/>
                    <xsd:attribute ref="my:Condition"/>                 
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Events">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="my:Event" minOccurs="1" maxOccurs="16"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Event">
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute ref="my:Name"/>
                    <xsd:attribute ref="my:Handler"/>
          <xsd:attribute ref="my:Parameters"/>
        </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:simpleType name="requiredString">
        <xsd:restriction base="xsd:string">
            <xsd:minLength value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
  <xsd:simpleType name="requiredAlphanumericString">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="[A-Za-z0-9_]{1,128}"/>
    </xsd:restriction>
  </xsd:simpleType>
    <xsd:simpleType name="requiredAnyURI">
        <xsd:restriction base="xsd:anyURI">
            <xsd:minLength value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="requiredBase64Binary">
        <xsd:restriction base="xsd:base64Binary">
            <xsd:minLength value="1"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

付録 B: 既定の概要 XSL

このセクションでは、Microsoft Identity Manager 2016 SP1 で提供される完全な概要 XSL を示します。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
  <xsl:template name="output-attribute-value">
    <xsl:param name="attribute"/>
    <xsl:param name="type"/>
    <xsl:choose>
      <xsl:when test="$type='Binary'">
        <xsl:value-of select="$attribute" disable-output-escaping="yes"/>
      </xsl:when>
      <xsl:when test="$type='Text'">
        <xsl:text xml:space="preserve" disable-output-escaping="yes">(text data)</xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="translate($attribute,' ','&#160;')" disable-output-escaping="yes"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template name="output-modified-value">
    <xsl:param name="name"/>
    <xsl:param name="attribute1"/>
    <xsl:param name="text1"/>
    <xsl:param name="attribute2"/>
    <xsl:param name="text2"/>
    <xsl:param name="type"/>
    <tr class="listViewRow" style="height:22px;">
      <xsl:if test="position() mod 2 != 0">
        <td class="commonSummaryListViewCellBR ms-vb">
          <xsl:value-of select="$name" disable-output-escaping="yes"/>
        </td>
        <xsl:choose>
          <xsl:when test="$attribute1 and $attribute1!=''">
            <td class="commonSummaryListViewCellBR ms-vb">
              <xsl:call-template name="output-attribute-value">
                <xsl:with-param name="attribute" select="$attribute1"/>
                <xsl:with-param name="type" select="$type"/>
              </xsl:call-template>
            </td>
          </xsl:when>
          <xsl:otherwise>
            <td class="commonSummaryListViewCellBR ms-vb">
              <xsl:copy-of select="$text1"/>
            </td>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:choose>
          <xsl:when test="$attribute2 and $attribute2!=''">
            <td class="commonSummaryListViewCellBR ms-vb">
              <xsl:call-template name="output-attribute-value">
                <xsl:with-param name="attribute" select="$attribute2"/>
                <xsl:with-param name="type" select="$type"/>
              </xsl:call-template>
            </td>
          </xsl:when>
          <xsl:otherwise>
            <td class="commonSummaryListViewCellBR ms-vb">
              <xsl:copy-of select="$text2"/>
            </td>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:if>
      <xsl:if test="position() mod 2 != 1">
        <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
          <xsl:value-of select="$name" disable-output-escaping="yes"/>
        </td>
        <xsl:choose>
          <xsl:when test="$attribute1 and $attribute1!=''">
            <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
              <xsl:call-template name="output-attribute-value">
                <xsl:with-param name="attribute" select="$attribute1"/>
                <xsl:with-param name="type" select="$type"/>
              </xsl:call-template>
            </td>
          </xsl:when>
          <xsl:otherwise>
            <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
              <xsl:copy-of select="$text1"/>
            </td>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:choose>
          <xsl:when test="$attribute2 and $attribute2!=''">
            <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
              <xsl:call-template name="output-attribute-value">
                <xsl:with-param name="attribute" select="$attribute2"/>
                <xsl:with-param name="type" select="$type"/>
              </xsl:call-template>
            </td>
          </xsl:when>
          <xsl:otherwise>
            <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
              <xsl:copy-of select="$text2"/>
            </td>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:if>
    </tr>
  </xsl:template>

  <xsl:template name="output-localized-attribute-value">
    <xsl:param name="locale"/>
    <xsl:param name="attribute"/>
    <xsl:param name="type"/>
    <tr class="listViewRow" style="height:22px;">
      <xsl:if test="position() mod 2 != 0">
        <td class="commonSummaryListViewCellBR ms-vb">
          <xsl:value-of select="$locale" disable-output-escaping="yes"/>
        </td>
        <td class="commonSummaryListViewCellBR ms-vb">
          <xsl:call-template name="output-attribute-value">
            <xsl:with-param name="attribute" select="$attribute"/>
            <xsl:with-param name="type" select="$type"/>
          </xsl:call-template>
        </td>
      </xsl:if>
      <xsl:if test="position() mod 2 != 1">
        <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
          <xsl:value-of select="$locale" disable-output-escaping="yes"/>
        </td>
        <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
          <xsl:call-template name="output-attribute-value">
            <xsl:with-param name="attribute" select="$attribute"/>
            <xsl:with-param name="type" select="$type"/>
          </xsl:call-template>
        </td>
      </xsl:if>
    </tr>
  </xsl:template>

  <xsl:template match="/">
    <xsl:choose>
      <xsl:when test="ModifiedAttributes[@ActionType='Create']">
        <!-- expected XML
        <ModifiedAttributes ActionType="Create">
          <Attribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InitializedValue="[the value]"/>
          other <Attribute> elements
        </ModifiedAttributes>
        -->
        <table cellspacing="0" cellpadding="3" class="commonSummaryListViewGridBorder">
          <tr align="left" class="listViewHeader" style="height:22px;">
            <th class="commonSummaryListViewHeaderCellBR">Attribute</th>
            <th class="commonSummaryListViewHeaderCellBR">Value</th>
          </tr>
          <xsl:for-each select="ModifiedAttributes/Attribute">
            <xsl:sort select="@DisplayName" order="ascending"/>
            <tr class="listViewRow" style="height:22px;">
              <xsl:if test="position() mod 2 != 0">
                <td class="commonSummaryListViewCellBR ms-vb">
                  <xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
                </td>
                <xsl:if test="count(LocalizedValue)!=0">
                  <td class="commonSummaryListViewCellBR ms-vb">
                    <table cellspacing="0" style="width:100%">
                      <tr class="listViewHeader">
                        <th align="left" class="commonSummaryListViewHeaderCellBR">Language</th>
                        <th align="left" class="commonSummaryListViewHeaderCellBR">Status</th>
                      </tr>
                      <xsl:if test="@InitializedValue and @InitializedValue != ''">
                        <xsl:call-template name="output-localized-attribute-value">
                          <xsl:with-param name="locale" select="@Locale"/>
                          <xsl:with-param name="attribute" select="@InitializedValue"/>
                          <xsl:with-param name="type" select="@DataType"/>
                        </xsl:call-template>
                      </xsl:if>
                      <xsl:for-each select="LocalizedValue">
                        <xsl:call-template name="output-localized-attribute-value">
                          <xsl:with-param name="locale" select="@Locale"/>
                          <xsl:with-param name="attribute" select="@InitializedValue"/>
                          <xsl:with-param name="type" select="../@DataType"/>
                        </xsl:call-template>
                      </xsl:for-each>
                    </table>
                  </td>
                </xsl:if>
                <xsl:if test="count(LocalizedValue)=0">
                  <td class="commonSummaryListViewCellBR ms-vb">
                    <xsl:call-template name="output-attribute-value">
                      <xsl:with-param name="attribute" select="@InitializedValue"/>
                      <xsl:with-param name="type" select="@DataType"/>
                    </xsl:call-template>
                  </td>
                </xsl:if>
              </xsl:if>
              <xsl:if test="position() mod 2 != 1">
                <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
                  <xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
                </td>
                <xsl:if test="count(LocalizedValue)!=0">
                  <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
                    <table cellspacing="0" style="width:100%">
                      <tr class="listViewHeader">
                        <th align="left" class="commonSummaryListViewHeaderCellBR">Language</th>
                        <th align="left" class="commonSummaryListViewHeaderCellBR">Status</th>
                      </tr>
                      <xsl:if test="@InitializedValue and @InitializedValue != ''">
                        <xsl:call-template name="output-localized-attribute-value">
                          <xsl:with-param name="locale" select="@Locale"/>
                          <xsl:with-param name="attribute" select="@InitializedValue"/>
                          <xsl:with-param name="type" select="@DataType"/>
                        </xsl:call-template>
                      </xsl:if>
                      <xsl:for-each select="LocalizedValue">
                        <xsl:call-template name="output-localized-attribute-value">
                          <xsl:with-param name="locale" select="@Locale"/>
                          <xsl:with-param name="attribute" select="@InitializedValue"/>
                          <xsl:with-param name="type" select="../@DataType"/>
                        </xsl:call-template>
                      </xsl:for-each>
                    </table>
                  </td>
                </xsl:if>
                <xsl:if test="count(LocalizedValue)=0">
                  <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
                    <xsl:call-template name="output-attribute-value">
                      <xsl:with-param name="attribute" select="@InitializedValue"/>
                      <xsl:with-param name="type" select="@DataType"/>
                    </xsl:call-template>
                  </td>
                </xsl:if>
              </xsl:if>
            </tr>
          </xsl:for-each>
        </table>
      </xsl:when>
      <xsl:when test="ModifiedAttributes[@ActionType='Modify']">
        <!-- expected XML
        <ModifiedAttributes ActionType="Modify">
          <SingleAttribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InitializedValue="[the old value]" SetValue="[the new value]"/>
          other <SingleAttribute> elements
          <MultipleAttribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InsertedItem="[inserted items separated by ';']" RemovedItem="[removed items separated by ';']"/>
          other <MultipleAttribute> elements
        </ModifiedAttributes>
        -->
        <table class="commonSummaryListViewGridBorder" cellspacing="0" cellpadding="3">
          <xsl:if test="ModifiedAttributes[count(SingleAttribute)!=0]">
            <tr align="left" class="listViewHeader">
              <th class="commonSummaryListViewHeaderCellBR">Single-Value Attributes</th>
              <th class="commonSummaryListViewHeaderCellBR">Old Value</th>
              <th class="commonSummaryListViewHeaderCellBR">New Value</th>
            </tr>
            <xsl:for-each select="ModifiedAttributes/SingleAttribute">
              <xsl:sort select="@DisplayName" order="ascending"/>
              <xsl:if test="count(LocalizedValue)!=0">
                <tr class="listViewRow">
                  <xsl:if test="position() mod 2 != 0">
                    <td class="commonSummaryListViewCellBR ms-vb">
                      <xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
                    </td>
                    <td colSpan="2">
                      <table cellspacing="0" cellpadding="0" style="width:100%">
                        <tr align="left" class="listViewHeader">
                          <th class="commonSummaryListViewHeaderCellBR">Language</th>
                          <th class="commonSummaryListViewHeaderCellBR">Old Value</th>
                          <th class="commonSummaryListViewHeaderCellBR">New Value</th>
                        </tr>
                        <xsl:if test="(@InitializedValue and @InitializedValue !='') or (@SetValue and @SetValue != '')">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@InitializedValue"/>
                            <xsl:with-param name="text1">(no initial value)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@SetValue"/>
                            <xsl:with-param name="text2">(value removed)</xsl:with-param>
                            <xsl:with-param name="type" select="@DataType"/>
                          </xsl:call-template>
                        </xsl:if>
                        <xsl:for-each select="LocalizedValue">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@InitializedValue"/>
                            <xsl:with-param name="text1">(no initial value)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@SetValue"/>
                            <xsl:with-param name="text2">(value removed)</xsl:with-param>
                            <xsl:with-param name="type" select="../@DataType"/>
                          </xsl:call-template>
                        </xsl:for-each>
                      </table>
                    </td>
                  </xsl:if>
                  <xsl:if test="position() mod 2 != 1">
                    <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
                      <xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
                    </td>
                    <td colSpan="2">
                      <table cellspacing="0" style="width:100%">
                        <tr align="left" class="listViewHeader">
                          <th class="commonSummaryListViewHeaderCellBR">Language</th>
                          <th class="commonSummaryListViewHeaderCellBR">Old Value</th>
                          <th class="commonSummaryListViewHeaderCellBR">New Value</th>
                        </tr>
                        <xsl:if test="(@InitializedValue and @InitializedValue !='') or (@SetValue and @SetValue != '')">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@InitializedValue"/>
                            <xsl:with-param name="text1">(no initial value)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@SetValue"/>
                            <xsl:with-param name="text2">(value removed)</xsl:with-param>
                            <xsl:with-param name="type" select="@DataType"/>
                          </xsl:call-template>
                        </xsl:if>
                        <xsl:for-each select="LocalizedValue">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@InitializedValue"/>
                            <xsl:with-param name="text1">(no initial value)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@SetValue"/>
                            <xsl:with-param name="text2">(value removed)</xsl:with-param>
                            <xsl:with-param name="type" select="../@DataType"/>
                          </xsl:call-template>
                        </xsl:for-each>
                      </table>
                    </td>
                  </xsl:if>
                </tr>
              </xsl:if>
              <xsl:if test="count(LocalizedValue)=0">
                <xsl:call-template name="output-modified-value">
                  <xsl:with-param name="name" select="@DisplayName"/>
                  <xsl:with-param name="attribute1" select="@InitializedValue"/>
                  <xsl:with-param name="text1">(no initial value)</xsl:with-param>
                  <xsl:with-param name="attribute2" select="@SetValue"/>
                  <xsl:with-param name="text2">(value removed)</xsl:with-param>
                  <xsl:with-param name="type" select="@DataType"/>
                </xsl:call-template>
              </xsl:if>
            </xsl:for-each>
          </xsl:if>
          <xsl:if test="ModifiedAttributes[count(MultipleAttribute)!=0]">
            <tr align="left" class="listViewHeader">
              <th class="commonSummaryListViewHeaderCellBR">Multiple-Value Attributes</th>
              <th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
              <th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
            </tr>
            <xsl:for-each select="ModifiedAttributes/MultipleAttribute">
              <xsl:sort select="@DisplayName" order="ascending"/>
              <xsl:if test="count(LocalizedValue)!=0">
                <tr class="uocSummaryTitleTR">
                  <xsl:if test="position() mod 2 != 0">
                    <td class="commonSummaryListViewCellBR ms-vb">
                      <xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
                    </td>
                    <td>
                      <table cellspacing="0" style="width:100%">
                        <tr align="left" class="listViewHeader">
                          <th class="commonSummaryListViewHeaderCellBR">Language</th>
                          <th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
                          <th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
                        </tr>
                        <xsl:if test="(@RemovedItem and @RemovedItem!='') or (@InsertedItem and @InsertedItem!='')">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@RemovedItem"/>
                            <xsl:with-param name="text1">(no removed item)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@InsertedItem"/>
                            <xsl:with-param name="text2">(no inserted item)</xsl:with-param>
                            <xsl:with-param name="type" select="@DataType"/>
                          </xsl:call-template>
                        </xsl:if>
                        <xsl:for-each select="LocalizedValue">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@RemovedItem"/>
                            <xsl:with-param name="text1">(no removed item)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@InsertedItem"/>
                            <xsl:with-param name="text2">(no inserted item)</xsl:with-param>
                            <xsl:with-param name="type" select="@DataType"/>
                          </xsl:call-template>
                        </xsl:for-each>
                      </table>
                    </td>
                  </xsl:if>
                  <xsl:if test="position() mod 2 != 1">
                    <td class="ms-alternating commonSummaryListViewCellBR ms-vb">
                      <xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
                    </td>
                    <td>
                      <table cellspacing="0" style="width:100%">
                        <tr align="left" class="listViewHeader">
                          <th class="commonSummaryListViewHeaderCellBR">Language</th>
                          <th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
                          <th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
                        </tr>
                        <xsl:if test="(@RemovedItem and @RemovedItem!='') or (@InsertedItem and @InsertedItem!='')">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@RemovedItem"/>
                            <xsl:with-param name="text1">(no removed item)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@InsertedItem"/>
                            <xsl:with-param name="text2">(no inserted item)</xsl:with-param>
                            <xsl:with-param name="type" select="@DataType"/>
                          </xsl:call-template>
                        </xsl:if>
                        <xsl:for-each select="LocalizedValue">
                          <xsl:call-template name="output-modified-value">
                            <xsl:with-param name="name" select="@Locale"/>
                            <xsl:with-param name="attribute1" select="@RemovedItem"/>
                            <xsl:with-param name="text1">(no removed item)</xsl:with-param>
                            <xsl:with-param name="attribute2" select="@InsertedItem"/>
                            <xsl:with-param name="text2">(no inserted item)</xsl:with-param>
                            <xsl:with-param name="type" select="@DataType"/>
                          </xsl:call-template>
                        </xsl:for-each>
                      </table>
                    </td>
                  </xsl:if>
                </tr>
              </xsl:if>
              <xsl:if test="count(LocalizedValue)=0">
                <xsl:call-template name="output-modified-value">
                  <xsl:with-param name="name" select="@DisplayName"/>
                  <xsl:with-param name="attribute1" select="@RemovedItem"/>
                  <xsl:with-param name="text1">(no removed item)</xsl:with-param>
                  <xsl:with-param name="attribute2" select="@InsertedItem"/>
                  <xsl:with-param name="text2">(no inserted item)</xsl:with-param>
                  <xsl:with-param name="type" select="@DataType"/>
                </xsl:call-template>
              </xsl:if>
            </xsl:for-each>
          </xsl:if>
        </table>
      </xsl:when>
    </xsl:choose>
  </xsl:template>
</xsl:stylesheet>