Unified Service Desk での FindControl 操作
このトピックでは、ユーザー インターフェイス (UI) コントロールを特定するために使用できる 2 つの方法について説明します。
UI ツリーベースの特定
この方法では、コントロール ツリー構造全部を取得します。 また、すべてのコントロール プロパティを使用して、最後のコントロールまで詳しく調べます。
サンプルのバインディング フォーマットを以下に示します。
<UIElement Name="UISystemandSecurityHyperlink">
<UIObject MatchCount="1">
<AndCondition>
<PropertyCondition Name="Name">CPCategoryPanel</PropertyCondition>
<PropertyCondition Name="ControlType">Pane</PropertyCondition>
</AndCondition>
<UIObject>
<AndCondition>
<PropertyCondition Name="Name">System and Security</PropertyCondition>
<PropertyCondition Name="ControlType">Hyperlink</PropertyCondition>
</AndCondition>
</UIObject>
</UIObject>
<UIElement>
タグについて以下の通り説明します。
<UIElement>
– これはName
属性を持つルート ノードです。Name
– DDA で使用されるフレンドリ名を取得します。StartFromDesktop
– 検索をデスクトップまたは現在の親から開始するか指定します。ParentUIElement
– 親コントロールとして使用する必要のあるUIElement
を指定します。 ボタンの場合は、"ウィンドウ" をParentUIElement
として指定する必要があります。 これは、バインディングを手動で作成するときに便利です。MatchCount
– マッチ数を指定します。 複数のコントロールのプロパティが同じ場合、コントロールはこのインデックスに基づいて特定されます。
<UIObject>
– このノードは、コントロールを特定するためにツリー構造一式を取得します。<PropertyCondition Name="Name">CPCategoryPanel</PropertyCondition>
– コントロール検索の対象となるプロパティの状態を取得します。 これはAndCondition/OrCondition/NotCondition
でグループ化されます。PropertyCondition
が 1 つのみの場合、グループ分けなしで、ルート ノードに表示されます。Name
は、コントロール プロパティを表します。AndCondition
、OrCondition
、およびNotCondition
– プロパティの状態のグループ化の条件。<AndCondition Id="SearchCondition">
– コントロールを特定する、プロパティの状態を取得します。Id
は条件リスト ID を表します。 グループ化を後で指定するとき、複数のAndCondition
を使用できます。<OrCondition Id="SearchCondition">
– コントロールを特定する、プロパティの状態を取得します。Id
は条件リスト ID を表します。 グループ化を後で指定するとき、複数のOrCondition
を使用できます。<NotCondition Id="SearchCondition">
– コントロールを特定する、プロパティの状態を取得します。Id
は条件リスト ID を表します。 グループ化を後で指定するとき、複数のNotCondition
を使用できます。AndCondition
、OrCondition
、およびNotCondition
– 入れ子にできますが、正しくグループ化する必要があります。 最上位の XML バインディングの状態は 1 つだけにする必要があり、内部的にグループ化することができます。
オフセット ベースの特定
この方法は、操作が簡単で、バインディングも作成します。
Note
この方法は、コントロールを識別するために UI ツリー内の位置番号を使用するので、コントロール ツリーの場所が変化する場合は使用できません。 UI ツリーの場所が動的に変更される場合は、この方法は使用できません。
MatchCount
属性はオフセット レベルとして使用されます。 必要に応じて、条件を指定する必要があります。
サンプルのバインディング フォーマットを以下に示します。
<UIElement name="textBoxTabPage1">
<UIObject MatchCount="2">
<UIObject MatchCount="1">
<UIObject MatchCount="2">
</UIObject>
</UIObject>
</UIObject>
</UIElement>