Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os recursos de configuração de exibição de controle de recursos (RCDC) são recursos definidos pelo usuário que você pode usar para controlar como outros recursos no armazenamento de dados do Microsoft Identity Manager 2016 SP1 (MIM) aparecem na interface do usuário (UI) para o usuário final. Cada recurso RCDC contém um arquivo de configuração XML que você pode alterar para adicionar, modificar ou remover o texto da interface do usuário e os controles da interface do usuário. Embora o MIM 2016 SP1 forneça vários recursos RCDC padrão, você também pode criar recursos RCDC personalizados para recursos personalizados. Para obter mais informações sobre como usar a interface do usuário RCDC no Portal FIM, consulte Introdução à configuração e personalização do Portal FIM na documentação do FIM.
Problemas conhecidos
O valor padrão em muitos controles RCDC não é suportado.
Nesta versão, não há suporte para a definição de valores padrão em controles em um controle de recurso, exceto para o controle de botão de opção. Você pode contornar esse problema para uma caixa suspensa especificando um valor padrão que não está associado a qualquer valor para forçar o usuário a alterar a seleção. Para contornar esse problema com outros controles, você precisa usar um fluxo de trabalho de autorização para fornecer um valor padrão durante o envio da solicitação.
Estrutura básica
Os dados XML para um recurso RCDC consistem em um único elemento ObjectControlConfiguration XML.
Observação
Para obter o esquema XSD completo, consulte Apêndice A: Esquema XSD padrão.
A seguir está o esquema XSD para o ObjectControlConfiguration elemento:
<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>
O elemento ObjectControlConfiguration contém os seguintes elementos:
ObjectDataSource: Este elemento especifica o TypeName de uma classe de fonte de dados que o controle de recursos (RC) usa. Para obter uma descrição e a definição de esquema, consulte a seção Fontes de dados a seguir neste documento. Um elemento ObjectControlConfiguration pode conter até 32 nós do elemento ObjectDataSource.
XmlDataSource: Esta é uma fonte de dados simples que é mais comumente usada para especificar o design de uma página de resumo. Para obter uma descrição e a definição de esquema, consulte a seção Fontes de dados a seguir neste documento. Um elemento ObjectControlConfiguration: pode conter até 32 nós do elemento XmlDataSource.
Painel: O administrador pode personalizar o layout da página RCDC modificando elementos dentro dos elementos do Painel. Para obter mais informações, consulte a seção Painel mais adiante neste documento. Um elemento ObjectControlConfiguration deve ter apenas um elemento Panel.
Eventos: Os administradores não podem fornecer code-behind personalizado, esse recurso é limitado. Este é o evento que um painel ou um controle pode emitir, com base em uma alteração de estado. Para obter mais informações, consulte a seção Eventos mais adiante neste documento. Um elemento ObjectControlConfiguration pode conter opcionalmente um elemento Event. Em geral, o uso de de eventos de personalizado não é suportado, a menos que especificamente desenvolvido em aprimoramentos posteriores.
Fontes de dados
O Microsoft Identity Manager usa fontes de dados como uma maneira de vincular dados aos componentes da interface do usuário. Isso ajuda a facilitar a separação dos dados da camada de apresentação. Há dois tipos de fontes de dados nos dados de configuração de recursos RCDC: ObjectDataSource e XmlDataSource.
ObjectDataSources especificar uma classe Microsoft .NET que fornece os dados para o RC. Há um conjunto fixo de tipos disponíveis de ObjectDataSources desde que o administrador possa optar por consumir ao criar RCDCs.
XMLDataSources fornecer uma maneira simples de estruturar dados baseados em XML e podem ser usados por administradores para fornecer dados personalizados. Os dados XML devem ser especificados diretamente no RCDC, a menos que você use a estrutura XML interna predefinida. A estrutura XML interna é usada para gerar páginas de resumo no RC.
No RCDC, você pode vincular essas fontes de dados a atributos dos controles de interface do usuário especificados no RCDC para gerar a interface do usuário.
Elementos ObjectDataSource
O Microsoft Identity Manager fornece os tipos de fonte de dados comuns na tabela a seguir que estão disponíveis para todos os tipos de recursos (exceto onde indicado).
NomeDoTipo | Descrição | Vinculação bidirecional | Sintaxe vinculativa |
---|---|---|---|
PrimaryResourceObjectDataSource | Isso representa o recurso do FIM 2010 que está sendo criado, editado ou exibido. O caminho na cadeia de caracteres de vinculação é o nome do atributo. O tipo de recurso é especificado pelo atributo TargetObjectType do RCDC e não no RCDC. Atributo ConfigurationData. | Sim |
[AttributeName] valor do atributo object dado pelo seu nome. |
PrimaryResourceDeltaDataSource | Esta fonte de dados cria o XML delta que compara o estado original e o estado atual do recurso do FIM 2010. O XML delta gerado é consumido pelo controle de resumo RC para renderizar a interface do usuário para solicitação que o usuário está enviando. | Não |
DeltaXml Isso é usado com o controle de resumo para exibir o delta. |
PrimaryResourceRightsDataSource | Esta fonte de dados fornece os direitos embutidos para cada atributo do recurso do FIM 2010. Isso permite que o RC determine antes do envio quais permissões o usuário tem nesse atributo e, em seguida, renderize a interface do usuário para esse atributo adequadamente. | Não | [AttributeName] |
SchemaDataSource | Essa fonte de dados pode ser usada para acessar informações relacionadas ao esquema, como nome para exibição, descrição, se o atributo é necessário ou não, bem como informações de tipo de recurso. | Não |
[AttributeName].Required Valor booleano que indica se o atributo deve ter um valor para ser válido. [AttributeName].DisplayNameString Valor que indica o Nome para Exibição da ligação. [AttributeName].DescriptionString Valor que indica a Descrição da ligação. [AttributeName].StringRegexString valor que indica String Regex de uma ligação. [AttributeName].DisplayName [AttributeName].Description [AttributeName].IntegerValueMinimum [AttributeName].IntegerValueMaximum [AttributeName].LocalizedAllowedValues |
DomainDataSource | Esta fonte de dados fornece uma enumeração de domínios, com base nos recursos de configuração de domínio. Esta fonte de dados só pode ser utilizada em RCDCs destinados a recursos de grupo e recursos de utilizadores. | Sim | Domínio |
A seguir está um exemplo de trecho RCDC que vincula três fontes de dados ao controle UocTextBox para editar o atributo Description de um grupo:
<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>
Elemento XMLDataSource
Usando um XMLDataSource elemento, você pode especificar dados personalizados que o RCDC pode consumir para um determinado recurso. Neste caso, os dados XML devem ser especificados no RCDC. Como alternativa, essa fonte de dados pode ser usada para fazer referência a uma estrutura de dados XML interna para renderizar a interface do usuário para páginas de resumo. Você controla que tipo de XMLDataSource usar ao defini-lo no RCDC.
NomeDoTipo | Descrição | Vinculação bidirecional | Sintaxe vinculativa |
---|---|---|---|
XMLDataSource | A fonte de dados representa dados XML. Os dados podem estar nos formatos XSL ou XSL incorporado:
|
Não |
Xpath[;namespaces] onde Xpath é um xpath XML válido para selecionar a nota necessária, na maioria das vezes "/" (raiz).
namespaces é uma lista opcional de cadeias de caracteres prefix=URI. A cadeia de caracteres é delimitada por ponto-e-vírgula conforme necessário para que o Xpath funcione em relação ao XML namespaced. |
ReferenceDeltaDataSource | A fonte de dados representa deltas de atributos de referência de valores múltiplos. É usado apenas no RCDC para Grupo e Conjunto. Embora a fonte de dados não esteja limitada a Grupos ou Conjuntos, ela requer alterações de código no host RCDC para enviar esses deltas. Atualmente, Group e set são os únicos hosts que reconhecem essa fonte de dados. |
Sim |
[AttributeName].Add onde [AttributeName] representa um atributo de referência e os dados retornados são as adições delta.
[AttributeName].Remove onde [AttributeName] representa um atributo de referência e os dados retornados são as remoções delta. DeltaXml |
RequestDetailsDataSource | A fonte de dados representa o atributo RequestParameter dos objetos Request. O parâmetro define o número máximo de valores de atributo a serem exibidos por atributo de valores múltiplos. É utilizado apenas no RCDC para Pedido. <my:ObjectDataSource my:TypeName="RequestDetailsDataSource" my:Name="requestDetails" my:Parameters="1000" /> |
Não | DeltaXml |
RequestStatusDataSource | A fonte de dados representa o atributo RequestStatusDetails dos objetos Request. É utilizado apenas no RCDC para Pedido. | Não | DeltaXml |
Para definir uma fonte de dados XML personalizada, use o seguinte XML:
<my:XmlDataSource my:Name="MyCustomData" >
%Insert custom, properly formatted XML data here%
</my:XmlDataSource>
Para usar o controle de resumo interno XSL, defina a fonte de dados da seguinte maneira:
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />
Se você estiver criando um RCDC para um tipo de recurso personalizado, poderá usar esse método para renderizar automaticamente uma página de resumo para esse recurso personalizado.
Segue-se um exemplo de como criar um separador de resumo no RCDC, utilizando o elemento PrimaryResourceDeltaDataSource com o elemento XMLDataSource utilizando o XSL incorporado:
<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>
Como alternativa, o usuário pode substituir o elemento XmlDataSource especificado anteriormente pelo seguinte formato para definir um layout personalizado de uma página de resumo. Como referência, o XSL de resumo padrão do FIM 2010 está incluído no Apêndice B: XSL de resumo padrão, mais adiante neste documento.
<my:XmlDataSource my:Name="summaryTransformXsl">
Insert valid XSL code here
</my:XmlDataSource>
Esquema para fontes de dados
O esquema XSD a seguir gera os dois tipos de fontes de dados:
<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>
Elemento de evento
Um elemento Event define o estado variável de um Control. A extensibilidade desse recurso é limitada porque você não pode escrever uma função personalizada (Handler) para definir qual é o comportamento depois que um evento é acionado. O mesmo elemento Event pode ser usado no elemento Panel. Para obter mais informações, consulte a seção Painel mais adiante neste documento.
A seguir está o esquema XSD para o elemento Event:
<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>
Um de Eventos é um elemento vazio e tem os seguintes atributos:
Nome: Este é o nome exclusivo de um evento. O único evento com suporte no ObjectControlConfiguration é o evento Load. Esse evento é acionado quando a página é carregada pela primeira vez.
Handler: Este é o nome exclusivo de um manipulador. Quando o evento é acionado, geralmente um método de programa é chamado para manipular a mudança do estado do controle. Os seguintes casos não são suportados:
- Removendo um manipulador existente de um controle existente.
- Criação de um novo manipulador.
- Anexando um manipulador a um controle existente ou novo.
Segue-se um exemplo de um elemento Eventos:
<my:Events>
<my:Event my:Name="Load" my:Handler="OnLoad"/>
</my:Events>
Elemento do painel
O elemento Painel é o elemento central de um layout RCDC. A seguir está o esquema XSD para o elemento Panel:
<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>
O elemento Painel contém um elemento recorrente, Agrupamento. Para obter mais informações, consulte a seção Agrupamento neste documento.
O elemento Panel tem os seguintes atributos:
Nome: O nome do Painel. Este é um atributo obrigatório do tipo string.
DisplayAsWizard: Este atributo está atualmente preterido. O atributo VerbContext correspondente no RCDC controla se o layout do recurso está no modo Assistente ou no modo Tab. Se estiver definido como 0 (modo Criar), também estará no modo Assistente. Caso contrário, está no modo Tab. Para obter mais informações, consulte Introdução à configuração e personalização do Portal FIM na documentação.
Caption: Este atributo está atualmente preterido. O usuário pode especificar legendas para uma página incluindo um Grupo que contém apenas informações de cabeçalho. Para obter mais informações, consulte a seção Agrupamento neste documento.
AutoValidate: Este é um atributo booleano opcional. Quando é definido como verdadeiro, a validação é acionada em relação a cada controle na guia atual. Por padrão, se o atributo estiver ausente, ele será definido como true. Ele pode ser usado em combinação com a propriedade RegularExpression. Para obter mais informações, consulte "RegularExpression" em uma seção posterior deste documento.
Elemento de agrupamento
O elemento Agrupamento define o layout geral de um Painel. Ele atua como um contêiner que agrupa controles individuais em diferentes seções e guias. A seguir está o esquema XSD para o elemento Grouping:
<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>
Existem três tipos de Agrupamento elemento:
Agrupamento de Cabeçalhos: Um Agrupamento de Cabeçalhos é opcional. Só pode haver um Agrupamento de Cabeçalhos em um Painel . Um Agrupamento de Cabeçalhos aparece na parte superior de um painel como legenda. Apenas um UocCaptionControl pode ser usado neste agrupamento. Para obter um exemplo de um agrupamento de cabeçalho, consulte a seção Exemplo.
de Agrupamento de Conteúdo: É necessário pelo menos um Agrupamento de Conteúdo. Pode haver vários agrupamentos de conteúdo em um painel. Um Agrupamento de Conteúdos aparece como o conteúdo principal de uma página RCDC. Cada Agrupamento de Conteúdo aparece como uma guia no mesmo Painel e pode conter de 1 a 256 controles. Consulte a seção Exemplos para obter um exemplo de um de agrupamento de conteúdo.
Agrupamento de Resumo: Um Agrupamento de Resumo é opcional. Só pode haver um Agrupamento de Resumo num Painel. Um Agrupamento de Resumo aparece como a última guia de um Painel. Apenas um controle UocHtmlSummary pode ser usado em um Agrupamento de Resumo para exibir as alterações feitas pelo usuário antes de enviar uma solicitação. Consulte a seção Exemplos para obter um exemplo de um Agrupamento de resumo.
Cada tipo de agrupamento contém os seguintes elementos:
Ajuda: Este elemento fornece texto de Ajuda em uma guia. Você também pode usá-lo para adicionar um link para um arquivo de Ajuda para a guia.
Controles: Para obter informações sobre esse elemento, consulte a seção Controle neste documento. Cada agrupamento deve ter de 1 a 256 controles, inclusive, dependendo do tipo de agrupamento.
Eventos: Para obter informações sobre este elemento, consulte a seção Eventos neste documento. Cada agrupamento pode, como opção, ter um Evento. Os eventos suportados em um elemento de agrupamento são os seguintes:
- BeforeLeave: Este evento é acionado quando o usuário está pronto para deixar uma guia em um agrupamento de conteúdo.
- AfterEnter: Este evento é acionado quando o usuário está pronto para inserir uma guia em um agrupamento de conteúdo.
Um agrupamento pode conter os seguintes sete atributos:
Nome: Este é o nome obrigatório do Agrupamento. A Nome do deve ser exclusiva dentro do Painel .
Legenda: A Legenda aparece como a legenda do cabeçalho em um Agrupamento de Cabeçalho. Ele aparece como a legenda da guia de um agrupamento Conteúdo ou Resumo.
Descrição: Um atributo de cadeia de caracteres opcional, Descrição é funcional somente quando é usado em um Agrupamento de Conteúdo. Use este elemento para fornecer ao usuário final alguns detalhes sobre as informações dentro da mesma guia.
Observação
Se esse atributo for usado em um agrupamento de resumo, o XML será considerado inválido. Se esse atributo for usado em um agrupamento de cabeçalhos, o XML será considerado válido, mas ignorado.
Enabled: Um atributo booleano opcional, Enabled é definido como true quando está ausente. Se Enabled estiver definido como false, o usuário final verá uma guia Disabled. Esse atributo é funcional somente em um agrupamento de conteúdo.
Observação
Se esse atributo for usado em um agrupamento de resumo, o XML será considerado inválido. Se esse atributo for usado em um agrupamento de cabeçalhos, o XML será considerado válido, mas ignorado.
visível : Pode ocultar um separador de página RCDC ou o respetivo título definindo este atributo como false. Por padrão, esse atributo opcional do tipo booleano é definido como true. Esse atributo é funcional somente em um Agrupamento de Conteúdo.
Observação
Quando há apenas um Agrupamento de Conteúdo em um Painel, esse recurso não funciona. Quando há mais de um Agrupamento de Conteúdo em um Painel, ele se comporta como descrito anteriormente.
IsHeader: Este atributo é um atributo booleano opcional que define se o Agrupamento é um Agrupamento de Cabeçalhos. Se esse atributo não for especificado, ele será definido como false.
IsSummary: Este é um atributo booleano opcional que define se o Agrupamento é um agrupamento Resumo. Se esse atributo não for especificado, ele será definido como false.
Exemplos de tipos de elementos de agrupamento
Esta seção contém exemplos para o elemento Groupings.
Exemplo: agrupamento de cabeçalhos
A figura a seguir mostra um exemplo de agrupamento de cabeçalho:
de agrupamento de cabeçalhos
O XML a seguir gera um exemplo de agrupamento de cabeçalhos. No XML, o Agrupamento de Cabeçalhos é a área com o texto de legenda "Agrupamento de Cabeçalhos de Exemplo".
<!--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-->
Exemplo: Agrupamento de conteúdo
A figura a seguir mostra um exemplo de Agrupamento de conteúdo:
de Agrupamento de Conteúdo
O XML a seguir gera um exemplo de agrupamento de conteúdo. No XML, o Agrupamento de Conteúdo é a área com o texto da legenda "Agrupamento de Conteúdo de Exemplo".
<!--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-->
Exemplo: Agrupamento de resumo
A figura a seguir mostra um exemplo de Agrupamento de Resumo:
O XML a seguir gera um exemplo de Agrupamento de Resumo. No XML, o Agrupamento de Resumo é a área com o texto de legenda "Agrupamento de Resumo de Exemplo".
<!--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-->
Elemento Ajuda
O elemento da Ajuda do pode ser incluído em um elemento Grouping ou Control como um elemento opcional. Se for utilizado num Agrupamento, deve ser o primeiro elemento utilizado. Ele fornece ajuda textual aos usuários finais para ajudá-los a fornecer informações precisas. O esquema XSD a seguir é para o elemento Help:
<xsd:element name="Help">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:HelpText"/>
<xsd:attribute ref="my:Link"/>
</xsd:complexType>
</xsd:element>
O código de exemplo XML a seguir gera um elemento Help:
<my:Help my:HelpText="Some Help Text for Group Basic Info" my:Link="03e258a0-609b-44f4-8417-4defdb6cb5e9.htm#bkmk_grouping_GroupingBasicInfo" />
Elemento de controlo
Um elemento Grouping contém um ou mais elementos Control. Os controlos são os principais elementos de um RCDC. Você pode personalizar o elemento Grouping definindo os diferentes elementos Control que ele contém. O esquema XSD a seguir é para o elemento 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>
Um elemento Control contém os seguintes elementos:
Ajuda: Este elemento é ignorado. Funciona apenas em Agrupamento.
CustomProperties: Este elemento não é suportado.
Options: Este elemento é usado somente em combinação com o UocDropDownList ou UocRadioButtonList Controls. Ele não é funcional com nenhum outro controle. Consulte a seção Opções neste documento para obter a estrutura desse elemento. Consulte a seção Controles individuais deste documento para ver como as opções são usadas por um controle.
Buttons: Este elemento é usado somente em combinação com o UocListView Control. Não é funcional para quaisquer outros controlos. Para obter mais informações, consulte a seção UocListView neste documento.
Properties: Este elemento é usado em todos os controles para especificar comportamentos adicionais de um controle. Para obter informações sobre esse elemento, consulte a seção Propriedades neste documento.
Eventos: Para obter a estrutura deste elemento, consulte a seção Eventos anteriormente neste documento. Consulte a seção Controles individuais deste documento para ver quais eventos são usados em um controle.
Um elemento Control pode conter os seguintes 10 atributos:
Nome: Este é o Nome do controle. O nome de um controle deve ser exclusivo dentro de cada painel. Este é um atributo obrigatório do tipo string.
TypeName: Este atributo especifica que tipo de controle é. Este é um atributo obrigatório do tipo string. Consulte a seção Controles individuais neste documento para cada nome de controle.
Caption: Você pode usar esse atributo para incluir uma legenda para o controle. A legenda geralmente é o nome de exibição dos dados que o controle está exibindo ou inserindo. Você pode especificar explicitamente um valor para a legenda ou vinculá-la com informações de nome de exibição do atributo de esquema. A legenda aparece no lado esquerdo de um controle de tamanho normal. Se um controle estiver abrangendo a tela inteira, a legenda aparecerá sobre o controle. Este é um atributo opcional do tipo string. Para obter informações sobre como vincular uma fonte de dados a um atributo ou um valor de propriedade, consulte a seção Propriedades.
O exemplo a seguir mostra como uma legenda pode ser usada explicitamente:
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias">…<my:Control/>
O exemplo a seguir mostra como uma legenda pode ser usada com uma fonte de dados. Se você usou o modelo para uma fonte de dados mostrada anteriormente neste documento, sua fonte de dados é esquema. Recomendamos que você vincule DisplayName do atributo a um atributo Caption.
<my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}">…<my:Control/>
Enabled: Este é um atributo opcional, do tipo booleano. Definindo esse valor de atributo como false, o usuário pode desabilitar um Control. O valor padrão é definido como true.
Visible: Este é um atributo opcional, do tipo booleano. Você pode usar esse atributo para ocultar todo o controle. O valor padrão é definido como true.
Descrição: Use este atributo opcional do tipo cadeia de caracteres para incluir uma descrição para ajudar o usuário final a entender o que ele deve colocar no controle ou o que o controle faz. Você pode especificar explicitamente um valor para a descrição ou associá-lo às informações de descrição do atributo do esquema.
A Descrição aparece no lado esquerdo de um controle de tamanho normal abaixo da legenda. Se um controle estiver abrangendo a tela inteira, a descrição aparecerá na parte superior do controle abaixo da legenda. Para obter informações sobre como vincular uma fonte de dados a um atributo ou um valor de propriedade, consulte a seção Propriedades deste documento.
O exemplo a seguir mostra como uma Descrição pode ser usada explicitamente:
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias" my:Description="This is explicit description.">…<my:Control/>
Este exemplo mostra como uma Descrição pode ser usada com uma fonte de dados. Se você tiver usado o modelo para uma fonte de dados mostrada anteriormente neste documento, sua fonte de dados será esquema. Recomendamos que você associe o Descrição do atributo a um atributo 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: Este atributo indica se o controle se estende por toda a tela. Este é um atributo opcional, do tipo booleano. O valor padrão é definido como false.
Observação
Os atributos Caption e Description são desabilitados quando esse atributo é definido como true. Use o controle UocLabel para fornecer uma legenda para um controle expandido.
Dica: Este é um atributo opcional do tipo string. O texto no atributo Hint ajuda o usuário final a decidir o que é uma entrada válida para o controle. A dica aparece abaixo do controle.
AutoPostback: Este é um atributo opcional, do tipo booleano. O valor padrão é false. Se definido como false, atualizar a página pode não atualizar o controle. Para obter informações sobre AutoPostback, procure a propriedade de controle de interface do usuário do Microsoft ASP.NET do mesmo nome.
RightsLevel: Este é um atributo opcional do tipo string. Você pode vincular esse atributo somente com direitos embutidos com uma fonte de dados. O controle é ativado ou desativado dinamicamente, com base nos direitos do usuário. Para obter informações sobre como vincular fontes de dados a um atributo ou um valor de propriedade, consulte a seção Propriedades deste documento.
Este exemplo mostra como um atributo RightsLevel pode ser usado com uma fonte de dados. Se você tiver usado o modelo para uma fonte de dados mostrada anteriormente neste documento, sua fonte de dados será direitos. Use o nome do atributo como o Caminho.
Elemento de propriedade
Você pode usar um elemento Property para personalizar ainda mais o comportamento de cada controle. Uma propriedade é um elemento vazio. O esquema XSD a seguir é para o elemento 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>
Cada propriedade tem os seguintes dois atributos necessários:
Name: Este atributo string-type é o nome exclusivo da propriedade. Controles diferentes têm propriedades diferentes. Existem algumas propriedades comuns que podem ser usadas por todos os controles. Para obter mais informações sobre quais nomes estão disponíveis para um determinado controle, consulte as seções Propriedades comuns e Controles individuais deste documento.
Valor: Este é o valor da propriedade. O tipo de dados do valor depende de qual propriedade ele é atribuído. Consulte a seção a seguir para obter o formato de valor permitido para propriedades específicas.
Vincular propriedade com conteúdo da fonte de dados
Algumas propriedades podem ser associadas a informações de uma fonte de dados. Use o seguinte formato de cadeia de caracteres para tornar essa vinculação. Consulte a descrição das propriedades individuais na seção Controles individuais deste documento para saber como vincular propriedades a uma fonte de dados.
<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.
O XML a seguir mostra como vincular uma fonte de dados a um elemento 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}"/>
Propriedades comuns
Todos os controlos RCDC especificados neste documento podem ter as propriedades comuns descritas nesta secção. Você pode usar essas Propriedades junto com outras Propriedades que são específicas para controles diferentes.
Required: Esta propriedade indica que o campo é um campo obrigatório ou um campo opcional. Um campo obrigatório deve ser preenchido com um valor. Um valor vazio não é suportado para entrada de cadeia de caracteres. Um campo opcional pode ser deixado vazio. Se este campo for um campo obrigatório sem valor preenchido, uma mensagem de erro aparecerá na parte superior do controle de entrada. Você pode especificar explicitamente se um campo é obrigatório ou opcional. Você também pode vincular o campo com as informações de esquema de uma determinada associação entre um atributo e um tipo de recurso. Por padrão, se essa propriedade estiver faltando, isso significa que o controle é um controle de entrada opcional.
O exemplo a seguir usa um valor explícito para essa propriedade:
<my:Property my:Name="Required" my:Value="True"/>
Este é um exemplo que usa uma fonte de dados dinâmica para essa propriedade. Se você usou o modelo para uma fonte de dados mostrada na seção anterior deste documento, sua fonte de dados é esquema. Use
<attribute name>.Required
como o caminho.<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
ReadOnly: Ao definir essa propriedade como true, o usuário final experimenta o controle em um modo somente leitura. Este é um atributo opcional, do tipo booleano. O valor padrão é definido como false. No entanto, às vezes, o comportamento dessa propriedade é substituído pelo tipo de direitos que uma pessoa tem sobre a ligação de dados com o controle. Por exemplo, se um usuário não tiver direitos para atualizar um campo e o campo estiver vinculado a direitos embutidos, o usuário verá os dados em um modo somente leitura, mesmo que essa propriedade esteja definida como false.
RegularExpression: Esta propriedade especifica restrições que são impostas ao valor no controle. Os formatos desse valor de propriedade são os formatos suportados no padrão .NET StringRegex. Para obter mais informações, consulte .NET Framework Regular Expressions. Se o controle for usado para inserir um valor, o valor será verificado em relação à restrição especificada nessa propriedade quando o usuário tentar sair da página atual. A mensagem de erro aparece na parte superior do controle que tem entrada inválida. O usuário pode especificar explicitamente uma expressão regular de cadeia de caracteres. O usuário também pode vinculá-lo com informações de esquema de um determinado atributo. Por padrão, se essa propriedade estiver ausente, isso significa que o controle não verifica se há restrições em cadeias de caracteres de entrada.
O exemplo a seguir usa um valor explícito para essa propriedade:
<my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
Este é um exemplo que usa uma fonte de dados dinâmica para essa propriedade. Se você tiver usado o modelo para uma fonte de dados mostrada anteriormente neste documento, sua fonte de dados será esquema. Use o
<attribute name>.StringRegex
como o caminho.<my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=Alias.StringRegex, Mode=OneWay}"/>
Visible: Este é um atributo opcional, do tipo booleano. Você pode usar esse atributo para ocultar todo o controle. O valor padrão é definido como true.
Elemento Opções
O elemento Options inclui um ou mais subnós Option. O elemento Opções de é usado somente com os controles UocRadioButtonList e UocDropDownList. Para obter detalhes sobre como usar esses controles, consulte a seção Controles individuais deste documento.
O esquema XSD a seguir é para o elemento Options:
<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>
O elemento Opções tem os seguintes atributos:
Value: Este é um atributo obrigatório do tipo string. O atributo value deve ser exclusivo dentro do mesmo controle. Apenas caracteres de A a Z, que não diferenciam maiúsculas de minúsculas, podem ser usados.
Caption: Este atributo obrigatório é o nome de exibição de cada opção.
Dica: Este é um atributo opcional. Use esse atributo para fornecer mais informações e dicas ao usuário final.
Variáveis de ambiente
As seguintes variáveis de ambiente podem ser utilizadas em qualquer configuração RCDC:
Variável | Descrição |
---|---|
<LoginID> |
Exibe a ID do usuário que está conectado no momento. |
<LoginDomain> |
Exibe o domínio do usuário que está conectado no momento. |
<Today> |
Exibe a data e hora atuais |
<FromToday_nnn> |
Exibe a data atual, mais nnn e a hora, onde nnn é um inteiro. |
<ObjectID> |
O ID do recurso primário do RCDC. |
<Attribute_xxx> |
Devolve um atributo especificado, xxx, do recurso primário RCDC. |
Depurar arquivos de configuração XML
Ao desenvolver ou modificar arquivos de configuração XML para um RCDC, você pode ajudar a reduzir erros validando o XML em relação aos arquivos XSD usando um editor como o Microsoft Visual Studio. Para obter mais informações, consulte uma introdução às ferramentas XML no Visual Studio 2005.
Personalizar ficheiros de Ajuda
Se você criar novos recursos e atributos, convém atualizar os arquivos de Ajuda existentes no Portal FIM com conteúdo para seus recursos personalizados. Os ficheiros de ajuda no Portal FIM estão em formato .htm e podem ser editados manualmente. Para obter mais informações sobre como criar atributos personalizados, consulte Introdução ao gerenciamento de recursos e atributos personalizados na documentação do FIM 2010.
Importante
Informações sobre os conceitos básicos de formatação ou edição de HTML não são fornecidas neste artigo. Espera-se que os usuários saibam como editar arquivos HTML.
Localização dos ficheiros de Ajuda
Todos os arquivos de Ajuda para o Portal do Microsoft Identity Manager 2016 SP1 estão localizados na pasta <ProgramFiles>\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Layouts\MSILM2\Help\1033\html
no servidor de serviço MIM.
Localizar um ficheiro de Ajuda específico
Todos os arquivos de Ajuda para o Portal FIM são nomeados com um identificador global exclusivo (GUID). Para localizar o arquivo correto para seu recurso personalizado:
No Portal FIM, abra o ficheiro de Ajuda na página Portal que pretende personalizar.
Clique com o botão direito do mouse no arquivo de Ajuda e selecione Propriedades.
Realce e copie o ficheiro
<GUID\>.htm
no campo Endereço URL.Navegue até a pasta onde os arquivos de Ajuda estão armazenados e procure o arquivo.
Adicionar conteúdo para atributo no elemento Agrupamento existente
Para adicionar conteúdo descritivo para um novo atributo dentro de um elemento de agrupamento existente (guia):
Identifique e localize o arquivo de Ajuda apropriado.
Usando um editor de HTML, abra o arquivo.
Localize onde pretende adicionar o conteúdo. Normalmente, isso está em um parágrafo adicional, por exemplo:
<p xmlns="">A new paragraph with customized information.</p>
Pode também ser um elemento inserido numa lista existente, por exemplo:
<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>
Adicionar conteúdo para o elemento Agrupamento existente
A maioria das páginas do Portal FIM tem vários elementos de agrupamento (ou guias), e os arquivos de Ajuda que acompanham têm seções marcadas que se relacionam com cada elemento de agrupamento. Os marcadores no HTML são especificados nas seções. Por exemplo, este é o HTML para a guia Informações de Trabalho do arquivo de Ajuda da página Criar Usuário no Portal FIM:
<a name="bkmk_grouping_WorkInfo" xmlns=""></a><h3 class="subHeading" xmlns="">Work Info</h3><p class="subHeading" xmlns=""></p><div class="subSection" xmlns="">
Ele é referenciado pelo elemento Grouping WorkInfo no arquivo XML de dados de configuração para o Configuration for User Creation RCDC. O nome do arquivo \<GUID\>.htm
e o marcador são especificados no parâmetro 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"/>
Amostras de controlo simples
Esta seção fornece exemplos para criar diferentes controles de caixa de texto simples.
A figura a seguir mostra alguns controles de caixa de texto simples em diferentes modos:
O segmento de código a seguir cria o primeiro controle de caixa de texto, que usa texto explícito para todos os atributos e propriedades:
<!-- 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.-->
O segmento de código a seguir cria o segundo controle de caixa de texto, que usa a técnica de vinculação dinâmica para vincular o controle a uma fonte de dados diferente:
<!-- 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.-->
O segmento de código a seguir cria o terceiro controle de rótulo e caixa de texto expandido:
<!-- 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.-->
O segmento de código a seguir cria o quarto controle de caixa de texto desabilitado. Embora esse controle não exiba uma diferença visível entre o estado desabilitado e o estado habilitado, o usuário não pode mais inserir dados na caixa de texto.
<!-- 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.-->
Controlos individuais
Esta seção documenta os controles individuais fornecidos com o Microsoft Identity Manager 2016 SP1.
UocButton
Nome: UocButton
Descrição: Este é um controle de botão simples que você pode usar para acionar certas ações. No entanto, como você não pode especificar seu próprio manipulador, o uso desse controle é limitado.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
Text: Esta propriedade especifica o texto que aparece no botão. Este é um atributo opcional do tipo string. O texto usa um valor de cadeia de caracteres explícito.
Eventos:
- OnButtonClicked: O evento é emitido quando o botão é clicado.
Exemplo:
de controle UocButton
O segmento XML a seguir produz um botão de controle UocButton simples:
<!--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
Nome: UocCaptionControl
Descrição: Este controle é usado para exibir a legenda de uma página RCDC. Esse controle foi projetado para ser usado apenas como um único controle em um agrupamento de cabeçalho. Usá-lo em qualquer outro contexto pode causar problemas de renderização ou erros no portal.
Modo: Somente leitura (OneWay)
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
MaxHeight: Esta propriedade especifica a altura máxima do ícone na seção de legenda. Esta propriedade é opcional. Esta propriedade usa um valor inteiro em pixels. O valor padrão é 32 pixels.
Eventos:
- Não existem eventos para este controlo.
Exemplo:
de controle UocCaptionControl
O segmento de código a seguir gera uma legenda de cabeçalho :
<!--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-->
O segmento de código a seguir gera uma legenda de conteúdo explícito :
<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-->
O segmento de código a seguir gera um Nome de exibição legenda dinâmica:
<!--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
Nome: UocCheckBox
Descrição: Este é um controle de caixa de seleção simples. Recomendamos que o usuário vincule esse controle com dados do tipo booleano. Esse controle pode ser usado como um controle somente leitura ou um controle atualizável, com base nos dados aos quais ele se liga.
Observação
Nesta versão, ao usar o controle de caixa de seleção no modo de edição para exibir um atributo booleano, se o atributo não tiver um valor atribuído anteriormente a ele, o Controle de Recursos adicionará um valor de falso ao atributo quando OK for clicado no modo de edição. A solução alternativa é sempre criar um atributo booleano que pressupõe que a inexistência é o mesmo que falso ou usar outros controles, como um botão de opção para atributos booleanos.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
DefaultValue: Esta é uma propriedade opcional, do tipo booleano. O valor padrão é definido como false. Este campo especifica o comportamento padrão de uma caixa de seleção. Isto pode ser especificado explicitamente.
Verificado: Esta é uma propriedade opcional, do tipo booleano. O valor padrão é definido como false. Esse valor substitui a propriedade DefaultValue quando ela está presente junto com DefaultValue. Este campo especifica o comportamento de uma caixa de seleção. Como DefaultValue, isso pode ser especificado explicitamente ou vinculado a dados do servidor.
Text: Este é um atributo opcional do tipo string. O texto é mostrado à direita da caixa de seleção. Você pode usar essa propriedade para especificar o texto que fornece mais informações ao usuário final.
Eventos:
- CheckedChanged: Quando a caixa de seleção altera seu estado, esse evento é emitido.
Exemplo:
No exemplo a seguir, uma associação personalizada é criada entre o tipo de recurso personalizado e o atributo IsConfigurationType. O XML é usado no RCDC de um tipo de recurso personalizado.
O segmento de código a seguir produz uma caixa de seleção dinâmica , conforme mostrado como Caixa de seleção dinâmica na figura anterior. Esse tipo de vinculação é mais versátil e útil do que uma caixa de seleção explícita. O atributo deve pertencer ao tipo de recurso atual.
<!--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
Nome: UocCommonMultiValueControl
Descrição: Este é um controle de caixa de texto de várias linhas que suporta formatação de cadeia de caracteres especial. Cada valor entre as entradas de valores múltiplos é separado entre si por um ponto-e-vírgula (;) ou uma quebra de linha na caixa de texto. Recomendamos vincular esse controle com dados de vários valores, cadeia de caracteres curta e tipos inteiros. Esse controle suporta o modo somente leitura e o modo atualizável.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
DataType: Este é um atributo obrigatório do tipo string. Você pode especificar isso como um String, Integerou DateTime tipo explicitamente. Você também pode vincular o atributo com a propriedade DataType do atributo schema. Um tipo de referência de valores múltiplos deve ser manipulado por UOCListView ou UOCIdentityPicker. Boolean multivalorado não é um tipo de dados suportado.
Rows: Este é um atributo opcional do tipo inteiro. Você pode definir a altura da caixa em número de caracteres. O valor padrão é definido como 1.
Colunas: Este é um atributo opcional do tipo inteiro. Você pode definir quantos de largura a caixa tem em número de caracteres. O valor padrão é definido como 20.
Value: Este é um atributo opcional do tipo string. Você pode vincular esse atributo somente à fonte de dados.
Eventos:
- ValueListChanged: Este evento é acionado quando o valor atual no controle é alterado.
Exemplo:
No exemplo a seguir, um atributo de cadeia de caracteres de valores múltiplos chamado AMultiValueString é criado e vinculado ao tipo de recurso personalizado. Este exemplo funciona somente depois que essa associação é criada.
de controle UocCommonMultiValueControl
O segmento de código a seguir gera um controle 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
Nome: UocDateTimeControl
Descrição: Isso é semelhante a um controle de caixa de texto, mas Descrição aceita apenas um determinado formato. No modo somente leitura, ele aparece como um rótulo. Para obter o formato da cadeia de caracteres de entrada suportada, consulte a propriedade DateTimeFormat nesta seção.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
DateTimeFormat: Este é um atributo opcional do tipo string. Os formatos suportados são DateTime e DateOnly. O valor padrão é definido como o formato DateTime.
DateTime: O atributo está formatado como mm/dd/aaaa hh:mm:ss AM.
DateOnly : O atributo está formatado como mm/dd/aa.
Observação
Os formatos DateTime e DateOnly são suportados, independentemente do usuário que está especificando a diferença.
Value: Este é um atributo opcional do tipo string. Você vincula esse atributo a uma fonte de dados de recurso. O valor desse atributo deve estar em conformidade com o formato datetime correto.
Eventos:
- DateTimeChanged: Quando o valor datetime muda, o evento ocorre.
Exemplo:
de controle UocDateTimeControl
O segmento de código a seguir produz o primeiro controle de 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 -->
O segmento de código a seguir produz o segundo controle de DateTime. Se você tiver usado o código de exemplo na seção Fontes de dados, o atributo ExpirationTime estará vinculado a todos os tipos de recursos. Portanto, você pode usá-lo com o seguinte código:
<!--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
Nome: UocDropDownList
Descrição: Este é um controle de caixa suspensa simples. Esse controle é usado para selecionar opções de um conjunto definido de opções. Os tipos de dados de string, inteiro, datetime e booleano são bons candidatos para esse controle.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
ValuePath: A propriedade para obter o atributo Value de ItemSource. Quando ItemSource é especificado como Custom, o caminho do valor é definido como Value. Ele se liga ao campo Value do elemento Option, conforme descrito nesta seção.
CaptionPath: A propriedade para obter o atributo Value de ItemSource. Quando ItemSource é especificado como Custom, o caminho do valor é definido como Caption. Ele se liga ao campo Caption do elemento Option, conforme descrito nesta seção.
HintPath: A propriedade para obter o atributo Value de ItemSource. Quando ItemSource é especificado como Custom, o caminho do valor é definido como Hint. Ele se liga ao campo Dica do elemento Option, conforme descrito nesta seção.
ItemSource: Uma coleção de ListControlItems que define as opções na lista. O usuário pode definir explicitamente como Custom e usar o elemento Option, conforme descrito nesta seção, para especificar o valor da cadeia de caracteres.
SelectedValue: O valor que está selecionado no momento. Esta é uma propriedade obrigatória do tipo string. Essa propriedade é vinculada a dados de cadeia de caracteres da fonte de dados.
Eventos:
- SelectedIndexChanged: O evento ocorre quando a seleção na caixa suspensa é alterada.
Opções:
Para obter a estrutura de um elemento Opções, consulte elemento Opções.
Value: O valor de um único elemento Options pode ser definido como qualquer cadeia de caracteres que seja a entrada válida da fonte de dados à qual o controle se liga.
Caption: A legenda pode ser qualquer valor de cadeia de caracteres.
Dica: Dica pode ser qualquer valor de cadeia de caracteres.
Exemplo:
de controle UocDropDownList
Opções de
Observação
Para que o exemplo funcione, tem de associar um atributo de tipo cadeia de caracteres existente Âmbito ao tipo de recurso personalizado ao qual o RCDC se aplica.
O segmento de código a seguir gera uma lista suspensa:
<!--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-->
UocFileBaixar
Nome : UocFileDownload
Descrição: Este controle contém um hiperlink. Quando o hiperlink é clicado, uma página Arquivo de Salvamento do Windows é exibida. O usuário pode salvar o arquivo em sua unidade local. A opção Abrir também é suportada se o Internet Explorer puder renderizar o formato de arquivo. Os tipos de dados recomendados para usar esse controle são formatado string (XML) e tipos binários.
Observação
Nesta versão do Microsoft Identity Manager 2016 SP1, o usuário deve fechar a janela do Internet Explorer na qual abriu o arquivo e, em seguida, atualizar a página. Depois de atualizar a janela do Internet Explorer, o usuário pode iniciar o download para salvar ou abrir o mesmo arquivo novamente na janela original.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
Text: Este é um atributo opcional, tipo string, que define o texto do hiperlink. O usuário pode especificar uma cadeia de caracteres explícita para essa propriedade.
Value: Este é um atributo obrigatório. Ele especifica a ligação de atributo no servidor cujo conteúdo deve ser baixado.
PromptedFileName: Este é um atributo opcional do tipo string. Este é o nome de arquivo que é sugerido ao usuário quando ele salva o arquivo baixado.
ContentType: Este é um atributo obrigatório do tipo string. Este é o tipo de arquivo no qual os dados são salvos. Texto ou binário são as duas opções de cadeia de caracteres suportadas. Se for texto, o valor de retorno é considerado como uma cadeia de caracteres longa. Caso contrário, para binário, o valor de retorno é considerado como byte[]. Se o texto estiver selecionado, o usuário pode, como opção, adicionar um sufixo para especificar o tipo de formato em que o texto está. Por exemplo, text/xml é válido.
Observação
Quando o valor que está vinculado a esse controle está vazio, o controle está faltando o hiperlink a ser usado para disparar a ação de download. Isso ocorre porque não há nada para baixar.
Eventos:
- Não existem eventos para este controlo.
Exemplo:
Observação
Antes de carregar esse arquivo de exemplo, o usuário deve criar uma associação entre um tipo de recurso personalizado e o atributo ConfigurationData existente.
O segmento de código a seguir gera um controle de download de arquivo:
<!--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
Nome: UocFileUpload
Descrição: Este controle contém uma caixa de texto que exibe o local do arquivo local a ser carregado, um botão Procurar arquivo e um botão de upload. Quando o usuário final clica em um botão Procurar, uma janela Abrir arquivo do Windows é exibida. O usuário final pode selecionar um arquivo em sua unidade local para carregar. Quando o arquivo é selecionado, o local do arquivo é mostrado na caixa de texto. Quando o botão Carregar é clicado, o arquivo é carregado na fonte de dados local do lado do cliente. O conteúdo do arquivo ainda não foi enviado ao servidor. Os tipos de dados recomendados para usar esse controle são os seguintes: cadeia de caracteres formatada (XML) ou tipos binários.
Observação
Não há indicação do progresso ou status do upload. Quando o arquivo é carregado na fonte de dados local, a caixa de texto é desmarcada.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
Value: Este é um atributo obrigatório. Ele especifica a ligação do atributo de esquema no servidor para o qual os dados são carregados.
ContentType: Este é um atributo opcional do tipo string. Este é o tipo de dados no qual o arquivo é salvo no servidor. Isso pode ser definido como Texto ou Binário. Quando a propriedade está ausente, o valor padrão é Binary.
MaxFileSize: Este é um atributo opcional do tipo string. MaxFileSize define o tamanho do arquivo carregado. Por padrão, se a propriedade estiver ausente, o tamanho máximo é de 1 megabyte (MB).
PromptedForNoValue: Este é um atributo opcional do tipo string. Ele define o texto que aparece para o usuário quando um arquivo não está sendo carregado.
Eventos:
- FileUploaded: Este evento é emitido quando o arquivo é carregado com êxito.
Exemplo:
de controle UocFileUpload
Observação
Para fazer o código de exemplo a seguir funcionar, você deve criar um novo atributo de tipo binário chamado ABinaryAttribute e, em seguida, criar uma nova associação entre um tipo de recurso personalizado e esse atributo.
O segmento de código a seguir gera um controle de upload:
<!--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
Nome : UocFilterBuilder
Descrição: Este é um controle complexo que permite ao usuário renderizar uma expressão XPath do MIM 2016. Algumas expressões XPath não são suportadas. Para obter informações sobre como usar o construtor de filtros, consulte a Ajuda do construtor de filtros.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
PermittedObjectTypes: define uma lista de tipos de recursos a serem mostrados na instrução select de um construtor de filtros. Para obter informações sobre como usar o construtor de filtros, consulte a Ajuda do construtor de filtros. A cadeia de caracteres está no formato de ResourceTypeA, ResourceTypeB, onde cada tipo de recurso é separado por uma vírgula ','.
Valor: Este é o valor com o qual o construtor de filtros é renderizado. Somente uma associação com dados de tipo de cadeia de caracteres que contém uma expressão XPath é suportada. O atributo Filter é um atributo recomendado para vincular esse controle.
PreviewButtonVisible: Esta é uma propriedade opcional do tipo booleano. Quando essa propriedade é definida como false, o usuário não vê um botão Visualizar. O valor padrão é definido como true. Esse botão pode ser usado em combinação com um controle de exibição de lista para visualizar os resultados de uma expressão XPath.
ExcludeGroupMembership: Esta é uma propriedade booleana. Quando essa propriedade é definida como true, você não pode criar um filtro que usa <Atributo de Referência> (por exemplo, ResourceID) é membro de <objeto Group>. Em outras palavras, quando essa propriedade é definida como true, você não pode criar um filtro que usa o diretório de associação do grupo.
PreviewButtonCaption: Esta é uma cadeia de caracteres opcional. Quando PreviewButtonVisible é definido como true, você pode usar essa propriedade para dar ao botão um texto personalizado. O texto aparece no botão Pré-visualizar.
Eventos:
- OnFilterChanged: Este evento é acionado quando o conteúdo do construtor de filtros é alterado.
Exemplo:
de controle UocFilterBuilder
O código de exemplo a seguir inclui um controle UOCLabel, um construtor de filtros simples com PermittedObjectTypes e um modo de exibição de lista de visualização. Aponte a propriedade ListFilter do modo de exibição de lista e a propriedade Value do construtor de filtros para o mesmo atributo da fonte de dados para vincular os dois.
Observação
Antes de usar esse código de exemplo, crie uma nova associação entre um atributo Filter existente e um tipo de recurso personalizado.
<!--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
Nome: UocHtmlSummary
Descrição: Pode utilizar este controlo para definir uma página de resumo numa página RCDC. Esta página de resumo é exibida depois que o usuário final envia uma solicitação. Esse controle só pode ser usado em um agrupamento de resumo e deve ser o único controle. É altamente recomendável que você use o código de exemplo fornecido.
Observação
Este controlo não foi testado extensivamente.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
ModificationsXml: Esta propriedade deve ser formatada como {Binding Source=delta, Path=DeltaXml}, onde delta é definido no cabeçalho de configuração ObjectDataSource.
TransformXsl: Esta propriedade é formatada como {Binding Source=summaryTransformXsl, Path=/}, onde summaryTransformXsl é definido no cabeçalho de configuração XmlDataSource.
Eventos:
- Não existem eventos para este controlo.
Exemplo:
Para obter um exemplo desse controle, consulte o exemplo de um agrupamento de resumo na seção Elemento de agrupamento deste documento.
UocHyperLink
Nome : UocHyperLink
Descrição: Este é um controle de hiperlink simples. Você pode usar esse controle para exibir informações como um hiperlink.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
ObjectReference: Esta é uma propriedade opcional, do tipo de referência. Se um recurso válido for referenciado pelo GUID definido nessa propriedade, o hiperlink fornecerá ao usuário final uma maneira de acessar o recurso. Isso é mutuamente exclusivo com a propriedade NavigateUrl.
Text: Esta é uma propriedade opcional do tipo string. Use essa propriedade para definir o texto que aparece como o hiperlink.
NavigateUrl: Esta é uma propriedade opcional do tipo string. Use essa propriedade para definir a URL de caminho completo à qual o hiperlink se vincula. Isso é mutuamente exclusivo com a propriedade ObjectReference.
Eventos:
- Não existem eventos para este controlo.
Exemplo:
de controle UocHyperLink
Observação
Você precisa de um GUID válido de um recurso para vinculá-lo. Nesse caso, o segundo hiperlink é gerado com um GUID válido. O primeiro pode ser qualquer site.
O segmento de código a seguir gera um hiperlink de redirecionamento:
<!--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-->
O segmento de código a seguir gera um hiperlink que faz referência a um recurso. A referência explícita pode ser substituída pela expressão {Binding Source=object, Path=Creator} para associá-la a uma fonte de dados. Isso pode ser válido somente quando o gerenciador do recurso existe e é de valor de tipo de referência.
<!--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
Nome : UocIdentityPicker
Descrição: Este controle consiste em uma caixa Resolver opcional e uma janela Procurar. A caixa Resolver opcional consiste em uma caixa de texto opcional para inserir a identidade, um botão Resolver para resolver a identidade e um botão Procurar para solicitar uma janela pop-up Procurar. A janela Procurar possibilita que o usuário selecione identidades por meio de um controle de exibição de lista. A identidade selecionada na janela Procurar é refletida na caixa Resolver.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
UsageKeywords: Esta é uma propriedade de cadeia de caracteres opcional. Você pode definir uma lista de escopos de pesquisa a serem usados no Seletor de Recursos fornecendo uma lista das palavras-chave de uso suportadas pela estrutura SearchScopeConfiguration, onde cada palavra-chave é separada por um apóstrofo (').
Filter: Esta é uma propriedade de cadeia de caracteres opcional. O usuário fornece uma expressão XPath para definir o escopo do seletor de recursos para exibir apenas os itens que se encaixam em um escopo definido. Esta propriedade é mutuamente exclusiva com a propriedade UsageKeywords. Quando o escopo de pesquisa é aplicado, essa propriedade não tem efeito.
ResultObjectType: Esta é uma propriedade de cadeia de caracteres opcional. O tipo de recurso é usado para renderizar recursos na lista de caixas de diálogo pop-up. Isso é usado com o Filtro para ajudar o Seletor de Identidade a identificar qual tipo de recurso é retornado pelo Filtro e renderizar os dados de acordo. Esta propriedade é mutuamente exclusiva com a propriedade UsageKeywords. Quando o escopo da pesquisa é aplicado, isso não tem efeito. A cadeia de caracteres aceita para essa propriedade é qualquer nome único, válido, do tipo de recurso, por exemplo, Person. Quando se espera que o filtro retorne vários tipos de recursos, Resource é usado.
PreviewTitle: Este é o título de pré-visualização utilizado numa vista de lista. Para obter informações sobre essa propriedade, consulte a seção UocListView.
ListViewTitle: Esta é uma propriedade de cadeia de caracteres opcional. Você pode usar essa propriedade para definir o texto mostrado na parte superior do modo de exibição de lista como um título.
Value: Esta é uma propriedade de cadeia de caracteres opcional. É recomendável vincular isso a um atributo de esquema para conectar o valor a uma fonte de dados.
Modo: Esta é uma propriedade de cadeia de caracteres opcional. Use essa propriedade para definir se um valor pode ser selecionado pelo Seletor de Identidades ou se várias identidades podem ser selecionadas. SingleResult e MultipleResult são os valores permitidos. Por padrão, ele é definido como SingleResult.
ObjectTypes: Esta é uma propriedade opcional do tipo string. Você pode definir uma lista de tipos de recursos contra os quais o usuário final pode resolver entradas na caixa Resolver do Seletor de Identidade. A lista consiste em uma lista de nomes de tipos de recursos separados por uma vírgula ','.
AttributesToSearch: Esta é uma propriedade opcional do tipo string. Você pode definir uma lista de atributos a serem usados para resolver o item no Seletor de Identidade, onde a lista é uma lista de atributos de esquema, separados por uma vírgula ','. Por exemplo, se AttributesToSearch estiver definido como
DisplayName, Alias
, o usuário poderá pesquisar os itens comDisplayName = \<search value\>
ouAlias=\<search value\>
. Os nomes de atributos inseridos aqui devem ser atributos válidos nos tipos de recursos de destino da fonte de dados especificada na propriedade Value. Os tipos de recursos de destino podem ser encontrados no campo ObjectTypes. Todos os atributos devem ser válidos em qualquer tipo de recurso citado no campo ObjectTypes.ColumnsToDisplay: Esta é uma propriedade opcional do tipo string. O usuário fornece uma lista de nomes de atributos de esquema, separados por uma vírgula ','. Os atributos definidos aqui compõem a coluna do modo de exibição de lista no Seletor de Identidade.
Linhas: Esta é uma propriedade inteira opcional. Ele funciona somente quando o Modo está definido como MultipleResult. Use essa propriedade para definir a altura da caixa de texto Resolver para um determinado tamanho em unidades de caracteres.
MainSearchScreenText: Esta é uma propriedade opcional do tipo string. Este é o texto personalizado que aparece enquanto a pesquisa está sendo executada na janela Procurar.
Eventos:
- SelectedObjectChanged: Este evento é emitido quando o usuário altera os recursos selecionados.
Exemplo:
Observação
Para que este exemplo funcione, você deve criar uma nova associação entre o atributo Manager e qualquer tipo de recurso personalizado ao qual esse XML se aplica.
O segmento de código a seguir gera um Seletor de Identidade no modo SingleResult usando as propriedades Filter e ResultObjectType como parte do RCDC:
<!--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.-->
A figura a seguir mostra um Seletor de Identidade no modo MultipleResult:
Observação
Para fazer esse código de exemplo funcionar, você deve vincular o atributo ExplicitMember (um atributo de referência de valores múltiplos) ao tipo de recurso personalizado. Crie escopos de pesquisa com a propriedade UsageKeyword definida como Pessoa e Grupo.
O segmento de código a seguir cria um Seletor de Identidade no modo MultipleResult:
<!--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
Nome: UocLabel
Descrição: Este é um controle de rótulo de texto simples, somente leitura. Recomendamos que esse controle seja usado para exibir dados somente leitura.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
Text: Este é um atributo do tipo string. Você define essa propriedade fornecendo um valor de cadeia de caracteres explícito ou vinculando-o a uma fonte de dados. Uma associação de exemplo que atribui o valor dessa propriedade é {Binding Source=object, Path=<nome de atributo válido>.
Para obter um exemplo do controle UocLabel, consulte o controle simples na seção Amostras de controle simples.
UocListView
Nome : UocListView
Descrição: Este é um controle avançado de exibição de lista. Consiste numa vista de lista simples, numa pesquisa simples opcional, num controlo de pesquisa avançada opcional, numa caixa de pré-visualização de seleção opcional e numa barra de botões de ação. A pesquisa simples opcional consiste em um escopo de pesquisa e uma caixa de texto de pesquisa simples. O controle de pesquisa avançada é um construtor de filtros. O modo de exibição de lista mostra uma lista pré-renderizada de recursos. Ele também pode mostrar resultados de pesquisa provenientes dos controles de pesquisa nesse controle. A barra Botão de ação define qual ação pode ser executada com base na seleção no modo de exibição de lista. A caixa Pré-visualização da Seleção mostra os itens que estão selecionados na vista de lista.
Importante
UocListView não funciona com atributos de referência de valor único. Ele só pode ser usado com atributos de referência de vários valores. Para atributos de referência de valor único, consulte UocIdentityPicker neste documento.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
SelectedValue: Esta é uma propriedade opcional do tipo cadeia de caracteres que está vinculada a um atributo de referência de valores múltiplos que aceita uma lista de cadeias de caracteres formatadas em GUID.
PageSize: Esta é uma propriedade inteira opcional. O usuário pode especificar quantas entradas cabem em uma página em um controle de exibição de lista. O valor padrão é 10 entradas. Qualquer número inteiro positivo é válido.
UsageKeyword: Esta é uma propriedade opcional do tipo string. O usuário pode especificar uma lista de palavras-chave que definem qual escopo de pesquisa é usado no controle de pesquisa de exibição de lista. Há recursos de escopo de pesquisa no servidor FIM 2010. O atributo em uma estrutura SearchScopeConfiguration, chamado UsageKeyword, é usado para agrupar um conjunto de escopos de pesquisa. O modo de exibição de lista consome essa lista de palavras-chave. Cada palavra-chave é separada por uma vírgula (,). Esta é a palavra-chave de uso usada no escopo de pesquisa correspondente que você deseja mostrar nesta exibição de lista. Isso só está em vigor quando a propriedade ShowSearchControl é definida como true.
SearchControlAutoPostback: Esta é uma propriedade booleana opcional. Defina o valor dessa propriedade como true para executar o autopostback quando uma pesquisa for acionada. Por padrão, SearchControlAutoPostback é definido como false.
EmptyResultText: Esta é uma propriedade opcional do tipo string. Por padrão, ele é definido como Sem itens, mas pode ser definido como qualquer valor de cadeia de caracteres. Este texto aparece quando um resultado da pesquisa está vazio.
ButtonHeight: Esta é uma propriedade opcional do tipo inteiro. Defina o valor dessa propriedade como qualquer valor inteiro positivo. Esta propriedade define a altura dos botões na barra de ações em pixels. O valor padrão é 32 pixels.
ButtonWidth: Esta é uma propriedade opcional do tipo inteiro. Defina o valor dessa propriedade como qualquer valor inteiro positivo. Esta propriedade define a largura dos botões na barra de ações em pixels. O valor padrão é 32 pixels.
CaptionImageMaxHeight: Esta é uma propriedade opcional do tipo inteiro. Defina o valor dessa propriedade como qualquer número inteiro positivo. Esta propriedade define a altura máxima do ícone de uma legenda opcional. O valor padrão é 32 pixels.
CaptionImageMaxWidth: Esta é uma propriedade opcional do tipo inteiro. Defina o valor dessa propriedade como qualquer número inteiro positivo. Esta propriedade define a largura máxima do ícone de uma legenda opcional. O valor padrão é 32 pixels.
CaptionImageUrl: Esta é uma propriedade opcional do tipo string. Esta propriedade define um URL que vincula a uma imagem que aparece como a imagem de legenda.
PreviewTitle: Esta é uma propriedade opcional do tipo string. Use essa propriedade para definir o texto que aparece na parte superior da caixa de visualização da seleção.
EnableSelection: Esta é uma propriedade opcional, do tipo booleano. Use essa propriedade para definir se um modo de exibição de lista está no modo de seleção. Se um modo de exibição de lista estiver no modo de seleção, uma coluna de caixas de seleção aparecerá na coluna mais à esquerda do modo de exibição de lista e uma caixa de visualização de seleção aparecerá na parte inferior do modo de exibição de lista. O valor padrão dessa propriedade é definido como true.
SingleSelection: Esta é uma propriedade opcional, do tipo booleano. Se o modo de seleção estiver ativado para a exibição de lista, definir esse valor como true limitará o usuário final a selecionar apenas um item da lista. Por padrão, o valor dessa propriedade é definido como false. Isso significa que, por padrão, o usuário final pode selecionar vários itens da lista.
RedirectUrl: Esta é uma propriedade opcional do tipo string. Use essa propriedade para especificar uma página para a qual redirecionar quando um item com hiperlink for clicado na lista. Essa URL pode conter espaços reservados que são substituídos pelo valor real durante o tempo de execução. Os espaços reservados são os seguintes:
- {0} objectType
- {1} objectID
- {2} displayName
ShowTitleBar: Esta é uma propriedade opcional, do tipo booleano. Use essa propriedade para especificar se a barra de título deve estar visível. O valor padrão dessa propriedade é false.
ShowActionBar: Esta é uma propriedade opcional, do tipo booleano. Use essa propriedade para especificar se a área da barra de ações deve estar visível. O valor padrão dessa propriedade é true.
ShowPreview: Esta é uma propriedade opcional do tipo booleano. Use essa propriedade para especificar se a área de visualização deve estar visível. O valor padrão dessa propriedade é true.
ShowSearchControl: Esta é uma propriedade opcional, do tipo booleano. Use essa propriedade para especificar se o controle de pesquisa deve estar visível. O valor padrão dessa propriedade é true.
ResultObjectType: Esta é uma propriedade opcional do tipo string. Use essa propriedade para especificar o tipo de objeto esperado dos resultados da pesquisa. O valor padrão dessa propriedade é Resource. Se o resultado da pesquisa contiver vários tipos de recursos, esse valor deverá ser especificado como Recurso.
ColumnsToDisplay: Esta é uma propriedade opcional. Use essa propriedade para especificar quais atributos você deseja que o modo de exibição de lista exiba como colunas. O valor padrão dessa propriedade é DisplayName, ResourceType. Cada coluna é representada pelo nome do sistema de um atributo. Cada coluna é separada por uma vírgula ','. Não é necessário especificar um valor para essa propriedade quando o modo de exibição de lista é usado no modo de seleção. No modo de seleção, a configuração de coluna vem do atributo SearchScopeColumn do escopo de pesquisa selecionado no momento.
ListFilter: Esta é uma propriedade opcional do tipo string. Este é o xpath usado para renderizar o modo de exibição de lista e só está em vigor quando a propriedade ShowSearchControl está definida como false. Quando esse valor é especificado, o modo de exibição de lista usa esse valor de propriedade para consultas e o modo de exibição de lista não está no modo de seleção. O filtro pode ser vinculado a um atributo string do recurso:
<my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}"/>
ou ser uma cadeia de caracteres que contém alguma variável de ambiente predefinida:
<my:Property my:Name="ListFilter" my:Value="/Approval[Request=''%ObjectID%'']"/>
TargetAttribute: Esta é uma propriedade obsoleta. Seu valor deve ser o nome do sistema de um atributo referenciado com vários valores. Recomendamos que esta propriedade não seja mais utilizada. Por exemplo, na gestão de grupos, em vez de utilizar:
<my:Property my:Name="TargetAttribute" my:Value="ExplicitMember"/>
Utilização:
<my:Property my:Name=”ListFilter” my:Value=”/Group[ObjectID=’%ObjectID%’]/ExplicitMember”/>
ItemClickBehavior: Esta é uma propriedade opcional do tipo string. Use essa propriedade para especificar se deseja que o item de clique em um modo de exibição de lista acione um postback do servidor ou exiba uma exibição detalhada do item. Dois valores de opção são suportados: ModelessDialog e Server. O valor padrão é ModelessDialog.
SearchOnLoad: Esta é uma propriedade opcional do tipo Boolean que especifica se o controle de exibição de lista deve ser consultado ao carregar. Esta propriedade é aplicável somente quando o modo de exibição de lista está no modo de seleção. O valor padrão para essa propriedade é true. Você pode desativá-lo se esperar que o usuário normalmente digite texto na pesquisa para obter um resultado significativo. Nesse caso, o modo de exibição de lista mostra inicialmente uma mensagem para informar ao usuário como realizar uma pesquisa. O texto pode ser personalizado pelas seguintes propriedades:
MainSearchScreenText : Esta propriedade opcional do tipo cadeia de caracteres é aplicável somente quando SearchOnload está definido como true. Essa propriedade pode ser usada para personalizar o texto que aparece no meio do modo de exibição de lista quando o modo de exibição de lista não pesquisa automaticamente. O valor padrão para essa propriedade é Localizar os recursos usando a pesquisa, conforme descrito anteriormente. Você pode especificar um valor para tornar o texto mais relevante para o seu cenário.
SubSearchScreenText : Esta propriedade opcional do tipo cadeia de caracteres é usada para personalizar o texto que aparece após a propriedade MainSearchScreenText. Normalmente, não é necessário especificar um valor para essa propriedade, a menos que queira adicionar algumas instruções adicionais sobre como usar o modo de exibição de lista.
Eventos:
- Não existem eventos para este controlo.
Exemplo:
Para obter exemplos de como usar o modo de exibição de lista junto com o controle UocFilterBuilder como uma lista de visualização, consulte os exemplos de UocFilterBuilder anteriormente neste documento. O UocListView também pode ser usado sem o construtor de filtros.
UocNumericBox
Nome: UocNumericBox
Descrição: Esta é uma caixa de texto simples que usa apenas valores inteiros. Esse controle suporta o modo somente leitura e o modo atualizável.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
MaxValue: Esta é uma propriedade opcional do tipo inteiro. Use essa propriedade para definir uma validação do lado do cliente para o controle. O valor que o usuário final insere não pode exceder esse valor. Você pode inserir um inteiro explícito ou associá-lo a dados inteiros de uma fonte de dados usando {Binding Source=schema, Path=IntegerMaximum}.
MinValue: Esta é uma propriedade opcional, do tipo inteiro. Use essa propriedade para definir uma validação do lado do cliente para o controle. O valor que o usuário final insere não pode ser inferior a esse valor. Você pode inserir um inteiro explícito ou associá-lo a dados inteiros de uma fonte de dados usando {Binding Source=schema, Path=IntegerMinimum}.
DefaultValue: Esta é uma propriedade opcional do tipo inteiro. Use essa propriedade para definir um valor padrão para o controle se o controle for usado para criar novos dados. Esse valor só pode ser explicitamente definido como um inteiro estático.
Value: Esta é uma propriedade opcional, do tipo inteiro. Quando você associa isso a um número inteiro de dados de tipo de uma fonte de dados, o valor desse atributo aparece quando a página é carregada e, em seguida, é salvo na fonte de dados após o envio.
Eventos:
- TextChanged: Este evento é emitido quando o valor atual dentro do controle muda.
Exemplo:
de controle UocNumericBox
Observação
O código de exemplo a seguir gera a primeira caixa numérica. A caixa numérica não está conectada a uma fonte de dados ou a qualquer informação de esquema.
<!--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.-->
O código de exemplo a seguir gera a segunda caixa numérica.
Observação
Para que este exemplo funcione, primeiro você deve criar um novo atributo de tipo inteiro chamado AnIntegerAttribute e associá-lo ao tipo de recurso personalizado.
<!--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
Nome: UocPictureBox
Descrição: Este controle é usado para renderizar dados de imagem, tipo binário. Recomendamos que esse controle seja usado com dados de tipo binário. A imagem pode ser renderizada por uma URL de imagem fornecida, dados de tipo binário ou a fonte de atributo que contém dados de tipo de imagem.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
ImageUrl: Esta é uma propriedade opcional do tipo string. Insira o URL da imagem de destino.
MaxHeight: Esta é uma propriedade de tipo de cadeia de caracteres opcional. Ele define a altura máxima da imagem a ser renderizada em pixels.
MaxWidth: Esta é uma propriedade opcional do tipo string. Ele define a largura máxima da imagem a ser renderizada em pixels.
ImageData: Esta é uma propriedade de tipo binário. Use essa propriedade para vincular uma fonte de dados à imagem exibida. A fonte de dados vinculada deve ser binária. Você também pode usar esse campo para definir explicitamente uma imagem fornecendo dados no formato byte[].
ImageResource: Esta é uma propriedade opcional, de tipo binário.
AlternativeText: Esta é uma propriedade opcional do tipo string. Esta propriedade aparece como texto alternativo quando a imagem não pode ser exibida.
Eventos:
- Não existem eventos para este controlo.
Exemplo:
Observação
Para usar esse exemplo, você deve ter uma associação de dados de imagem existente com o controle.
O segmento de código a seguir gera um controle de caixa de imagem que vincula uma fonte de dados com o controle:
<!--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-->
O segmento de código a seguir gera um controle de caixa de imagem que vincula uma imagem de URL com o controle:
<!--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
Nome: UocRadioButtonList
Descrição: Esta é uma lista simples, de botões de opção. As escolhas excluem-se mutuamente nesta lista. Esse controle é recomendado quando os usuários têm cinco ou menos opções para escolher. Caso contrário, UOCListView é recomendado.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
ValuePath: O caminho do valor é definido como Value. Ele se liga ao campo Value do elemento Option, conforme descrito nesta seção.
CaptionPath: O caminho do valor está definido como Caption. Ele se liga ao campo Caption do elemento Option, conforme descrito nesta seção.
HintPath: O caminho do valor é definido como Dica. Ele se liga ao campo Dica do elemento Option, conforme descrito nesta seção.
SelectedValue: O valor que está selecionado no momento. Esta é uma propriedade obrigatória do tipo string. Essa propriedade se liga a dados de cadeia de caracteres da fonte de dados.
Eventos:
SelectedIndexChanged: O evento ocorre quando o botão de opção selecionado é alterado.
CheckedChanged: Quando o botão de opção muda de estado, esse evento é emitido.
Opções:
Só pode haver duas Opções elementos como opções para esse controle. Para obter a estrutura de um elemento Opções, consulte elemento Opções.
Value: O campo Value em um único elemento Option deve ser definido como True ou False.
Caption: Pode ser qualquer valor de cadeia de caracteres.
Dica: Pode ser qualquer valor de cadeia de caracteres.
Exemplo:
de controle UocRadioButtonList
Observação
Para que este exemplo funcione, você deve criar um novo atributo booleano, ABooleanAttribute, e associá-lo ao seu tipo de recurso personalizado.
O segmento de código a seguir cria uma lista de botões de opção:
<!--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
Nome: UocSimpleRadioButton
Descrição: Este é um controle simples, botão de opção. O uso desse controle é semelhante a uma caixa de seleção simples. Há dois botões de opção, mostrando lado a lado com a etiquetagem do texto. Recomenda-se vincular o controle a dados do tipo booleano.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
TrueText: Esta é uma propriedade opcional do tipo string. Este é o texto que aparece quando o botão de opção é selecionado.
FalseText: Esta é uma propriedade opcional do tipo string. Este é o texto que aparece quando o botão de opção não está selecionado.
SelectedItem: Esta é uma propriedade opcional, do tipo booleano. Esse valor indica que o botão de opção está selecionado. Isso pode se associar a dados do tipo booleano de uma fonte de dados. O valor padrão é definido como false.
Eventos:
- CheckedChanged: Quando o botão de opção muda de estado de selecionado para não selecionado, ou o contrário, esse sinal é emitido.
Exemplo:
de controle UocSimpleRadioButton
Observação
Para fazer o exemplo funcionar, você deve criar um novo atributo booleano ABooleanAttribute e vinculá-lo ao seu tipo de recurso personalizado. Os dados RCDC são aplicados ao mesmo tipo de recurso personalizado.
O seguinte segmento de código gera um botão de opção:
<!--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
Nome: UocTextBox
Descrição: Esta é uma caixa de texto simples que suporta a entrada do tipo string. Recomendamos que você use esse controle para vincular com dados do tipo string.
Propriedades:
Todas as propriedades comuns: para obter informações sobre essas propriedades, consulte Propriedades comuns.
MaxLength: Este é um atributo opcional do tipo inteiro. Esta propriedade especifica o comprimento máximo para uma entrada de cadeia de caracteres. O valor padrão para essa propriedade é 128 caracteres.
Text: Esta é uma propriedade opcional do tipo string. Este é o texto que aparece na caixa de texto. Você pode definir uma cadeia de caracteres explícita que aparece na caixa de texto durante o carregamento inicial do controle ou vinculá-la a um atributo de esquema de um tipo de cadeia de caracteres.
Rows: Esta é uma propriedade opcional do tipo inteiro. Esta propriedade define a altura da caixa de texto em unidades de caracteres. O valor padrão é um caractere.
Colunas: Esta é uma propriedade opcional, do tipo inteiro. Esta propriedade define a largura da caixa de texto em unidades de caracteres. O valor padrão é 20 caracteres.
Wrap: Esta é uma propriedade opcional, do tipo booleano. Ao definir o valor dessa propriedade como true, o usuário habilita o recurso Word Wrap na caixa de texto. O valor padrão dessa propriedade é definido como true.
UniquenessValidationXPath: Esta é uma propriedade opcional do tipo string. Ele usa uma expressão de filtro FIM XPath válida e garante que a entrada de valor pelo usuário seja exclusiva dentro dos recursos que estão no escopo do filtro. Por exemplo, para garantir que o nome de exibição solicitado pelo usuário seja exclusivo em todos os grupos de segurança habilitados para email no banco de dados do FIM Service, use o
/Group[DisplayName=’%VALUE%’ and Type=’MailEnabledSecurity’
XPath . A ação de validação é executada quando o usuário sai da página. Esta propriedade é suportada apenas no RCDC para a criação de um recurso.UniquenessErrorMessage: Esta é uma propriedade opcional do tipo string. Essa cadeia de caracteres é usada para exibir uma mensagem de erro se a validação UniquenessValidationXPath falhar e pode ser texto explícito ou uma variável de recurso de cadeia de caracteres. Se essa propriedade não for especificada, a mensagem de erro padrão para uma validação com falha será "%VALUE% já existe. Por favor, tente um diferente."
Eventos:
- TextChanged: Este evento é emitido quando o texto dentro da caixa de texto é alterado.
Exemplo:
Consulte a seção Exemplos de controle simples para obter uma amostra completa desse controle.
Apêndice A: Esquema XSD padrão
Esta seção mostra o esquema XSD completo para todos os RCDCs padrão fornecidos com o Microsoft Identity Manager 2016 SP1.
<?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>
Apêndice B: Resumo padrão XSL
Esta seção mostra o XSL de resumo completo fornecido com o Microsoft Identity Manager 2016 SP1.
<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,' ',' ')" 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>