Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zasoby konfiguracji wyświetlania kontroli zasobów (RCDC) to zasoby zdefiniowane przez użytkownika, których można użyć do kontrolowania sposobu wyświetlania innych zasobów w magazynie danych programu Microsoft Identity Manager 2016 SP1 (MIM) w interfejsie użytkownika użytkownika. Każdy zasób RCDC zawiera plik konfiguracji XML, który można zmienić, aby dodać, zmodyfikować lub usunąć tekst interfejsu użytkownika i kontrolki interfejsu użytkownika. Chociaż program MIM 2016 SP1 udostępnia kilka domyślnych zasobów RCDC, można również utworzyć niestandardowe zasoby RCDC dla zasobów niestandardowych. Aby uzyskać więcej informacji na temat korzystania z interfejsu użytkownika RCDC w portalu programu FIM, zobacz Wprowadzenie do konfigurowania i dostosowywania portalu FIM w dokumentacji programu FIM.
Znane problemy
Wartość domyślna w wielu kontrolkach RCDC nie jest obsługiwana.
W tej wersji ustawienie wartości domyślnych w kontrolkach w kontrolce zasobów nie jest obsługiwane z wyjątkiem kontrolki przycisku opcji. Ten problem można obejść dla pola listy rozwijanej, określając wartość domyślną, która nie jest skojarzona z żadną wartością, aby wymusić zmianę zaznaczenia przez użytkownika. Aby obejść ten problem z innymi kontrolkami, należy użyć przepływu pracy autoryzacji, aby podać wartość domyślną podczas przesyłania żądania.
Struktura podstawowa
Dane XML zasobu RCDC składają się z jednego elementu ObjectControlConfiguration XML.
Uwaga
Aby uzyskać pełny schemat XSD, zobacz Dodatek A: Domyślny schemat XSD.
Poniżej przedstawiono schemat XSD dla elementu ObjectControlConfiguration:
<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>
Element ObjectControlConfiguration zawiera następujące elementy:
ObjectDataSource: ten element określa typeName klasy źródła danych używanej przez kontrolkę zasobów (RC). Opis i definicja schematu można znaleźć w poniższej sekcji Źródła danych w tym dokumencie. Element ObjectControlConfiguration może zawierać maksymalnie 32 węzły elementu ObjectDataSource.
XmlDataSource: jest to proste źródło danych, które jest najczęściej używane do określania projektu strony podsumowania. Opis i definicja schematu można znaleźć w poniższej sekcji Źródła danych w tym dokumencie. ObjectControlConfiguration: element może zawierać maksymalnie 32 węzły elementu XmlDataSource.
Panel: administrator może dostosować układ strony RCDC, modyfikując elementy wewnątrz elementów panelu. Aby uzyskać więcej informacji, zobacz sekcję Panel w dalszej części tego dokumentu. Element ObjectControlConfiguration musi mieć tylko jeden element Panel.
Zdarzenia: administratorzy nie mogą udostępniać dostosowanego kodu, ta funkcja jest ograniczona. Jest to zdarzenie, które może emitować panel lub kontrolka na podstawie zmiany stanu. Aby uzyskać więcej informacji, zobacz sekcję Zdarzenia w dalszej części tego dokumentu. Element ObjectControlConfiguration może zawierać opcjonalnie jeden element Event. Ogólnie rzecz biorąc, użycie niestandardowych zdarzeń nie jest obsługiwane, chyba że zostały specjalnie opracowane w późniejszych ulepszeniach.
Źródła danych
Program Microsoft Identity Manager używa źródeł danych jako sposobu powiązania danych ze składnikami interfejsu użytkownika. Ułatwia to oddzielenie danych od warstwy prezentacji. Istnieją dwa rodzaje źródeł danych w danych konfiguracji zasobów RCDC: ObjectDataSource i XmlDataSource.
ObjectDataSources określić klasę microsoft .NET, która dostarcza dane do wersji RC. Istnieje stały zestaw dostępnych typów obiektów ObjectDataSources, pod warunkiem, że administrator może zdecydować się na korzystanie podczas tworzenia kontrolerów RCDCs.
XMLDataSources zapewniają prosty sposób tworzenia struktury danych opartych na formacie XML i mogą być używane przez administratorów do dostarczania dostosowanych danych. Dane XML muszą być określone bezpośrednio w centrum danych RCDC, chyba że używasz wbudowanej, wstępnie zdefiniowanej struktury XML. Wbudowana struktura XML służy do generowania stron podsumowania w wersji RC.
W centrum danych RCDC można powiązać te źródła danych z atrybutami kontrolek interfejsu użytkownika określonych w centrum danych RCDC w celu wygenerowania interfejsu użytkownika.
Elementy ObjectDataSource
Program Microsoft Identity Manager udostępnia typowe typy źródeł danych w poniższej tabeli, które są dostępne dla wszystkich typów zasobów (z wyjątkiem przypadków, w których określono).
| TypeName | Opis | Powiązanie dwukierunkowe | Składnia powiązania |
|---|---|---|---|
| PrimaryResourceObjectDataSource | Reprezentuje on zasób programu FIM 2010, który jest tworzony, edytowany lub wyświetlany. Ścieżka w ciągu powiązania jest nazwą atrybutu. Typ zasobu jest określony przez atrybut TargetObjectType rcDC, a nie w RCDC. ConfigurationData, atrybut. | Tak |
[AttributeName] wartość atrybutu obiektu nadana przez jego nazwę. |
| PrimaryResourceDeltaDataSource | To źródło danych tworzy kod XML różnicowy, który porównuje oryginalny stan i bieżący stan zasobu PROGRAMU FIM 2010. Wygenerowany kod XML różnicowy jest używany przez kontrolkę podsumowania RC w celu renderowania interfejsu użytkownika dla żądania przesłania przez użytkownika. | Nie. |
DeltaXml Ta funkcja jest używana z kontrolką podsumowania do wyświetlania różnicy. |
| PrimaryResourceRightsDataSource | To źródło danych zapewnia wbudowane prawa dla każdego atrybutu zasobu PROGRAMU FIM 2010. Dzięki temu rc może określić przed przesłaniem uprawnień, które użytkownik ma w tym atrybucie, a następnie renderować interfejs użytkownika dla tego atrybutu odpowiednio. | Nie. | [AttributeName] |
| SchemaDataSource | To źródło danych może służyć do uzyskiwania dostępu do informacji dotyczących schematu, takich jak nazwa wyświetlana, opis, czy atrybut jest wymagany, a także informacje o typie zasobu. | Nie. |
[AttributeName].Required wartość logiczna wskazująca, czy atrybut musi mieć prawidłową wartość. [AttributeName].DisplayNameString wartość wskazująca nazwę wyświetlaną powiązania. [AttributeName].DescriptionString Wartość wskazująca opis powiązania. [AttributeName].StringRegexString wartość wskazującą ciąg regex powiązania. [AttributeName].DisplayName [AttributeName].Description [AttributeName].IntegerValueMinimum [AttributeName].IntegerValueMaximum [AttributeName].LocalizedAllowedValues |
| DomainDataSource | To źródło danych zapewnia wyliczenie domen na podstawie zasobów konfiguracji domeny. To źródło danych może być używane tylko w rcdcs, które są przeznaczone dla zasobów grupy i zasobów użytkowników. | Tak | Domena |
Poniżej przedstawiono przykładowy fragment kodu RCDC, który wiąże trzy źródła danych z kontrolką UocTextBox w celu edytowania atrybutu Description grupy:
<my:ObjectDataSource my:TypeName="PrimaryResourceObjectDataSource" my:Name="object" my:Parameters=""/>
<my:ObjectDataSource my:TypeName="SchemaDataSource" my:Name="schema"/>
<my:ObjectDataSource my:TypeName="PrimaryResourceRightsDataSource" my:Name="rights"/>
<my:Control my:Name="Description" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Description.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Description}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
<my:Property my:Name="Rows" my:Value="3"/>
<my:Property my:Name="Columns" my:Value="60"/>
<my:Property my:Name="MaxLength" my:Value="450"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=Description, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
XMLDataSource, element
Korzystając z elementu XMLDataSource, można określić dane niestandardowe, które rcDC może używać dla danego zasobu. W takim przypadku dane XML muszą być określone w centrum danych RCDC. Alternatywnie to źródło danych może służyć do odwołowania się do wbudowanej struktury danych XML w celu renderowania interfejsu użytkownika dla stron podsumowania. Określasz, jakiego typu XMLDataSource używać podczas definiowania go w centrum danych RCDC.
| TypeName | Opis | Powiązanie dwukierunkowe | Składnia powiązania |
|---|---|---|---|
| XMLDataSource | Źródło danych reprezentuje dane XML. Dane mogą być w formatach XSL lub osadzonych XSL:
|
Nie. |
Xpath[;namespaces]gdzie Xpath jest prawidłowym xpath XML, aby wybrać wymaganą notatkę, najczęściej "/" (root).
namespaces jest opcjonalną listą ciągów prefiks=URI. Ciąg jest rozdzielany średnikami zgodnie z wymaganiami dla ścieżki Xpath do pracy z przestrzeń nazw XML. |
| ReferenceDeltaDataSource | Źródło danych reprezentuje różnice wielowartościowych atrybutów referencyjnych. Jest on używany tylko w wersji RCDC dla grupy i zestawu. Mimo że źródło danych nie jest ograniczone do grup lub zestawów, wymaga zmian kodu na hoście RCDC w celu przesłania takich różnic. Obecnie grupuj i ustaw są jedynymi hostami, które rozpoznają to źródło danych. |
Tak |
[AttributeName].Add gdzie [AttributeName] reprezentuje atrybut odwołania, a zwracane dane to dodatki różnicowe.
[AttributeName].Remove gdzie [AttributeName] reprezentuje atrybut odwołania, a zwracane dane to usunięcia różnicowe. deltaxml |
| RequestDetailsDataSource | Źródło danych reprezentuje atrybut RequestParameter obiektów Request. Parametr ustawia maksymalną liczbę wartości atrybutów, które mają być wyświetlane dla atrybutu wielowartościowego. Jest on używany tylko w wersji RCDC dla żądania. <my:ObjectDataSource my:TypeName="RequestDetailsDataSource" my:Name="requestDetails" my:Parameters="1000" /> |
Nie. | DeltaXml |
| RequestStatusDataSource | Źródło danych reprezentuje atrybut RequestStatusDetails obiektu Request. Jest on używany tylko w wersji RCDC dla żądania. | Nie. | DeltaXml |
Aby zdefiniować niestandardowe źródło danych XML, użyj następującego kodu XML:
<my:XmlDataSource my:Name="MyCustomData" >
%Insert custom, properly formatted XML data here%
</my:XmlDataSource>
Aby użyć wbudowanej kontrolki podsumowania XSL, zdefiniuj źródło danych w następujący sposób:
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />
Jeśli tworzysz rcDC dla niestandardowego typu zasobu, możesz użyć tej metody, aby automatycznie renderować stronę podsumowania dla tego zasobu niestandardowego.
Poniżej przedstawiono przykład tworzenia karty podsumowania w centrum dystrybucji danych RCDC przy użyciu elementu PrimaryResourceDeltaDataSource z elementem XMLDataSource przy użyciu wbudowanego XSL:
<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>
Alternatywnie użytkownik może zastąpić element XmlDataSource określony wcześniej następującym formatem, aby zdefiniować dostosowany układ strony podsumowania. Jako odwołanie domyślny protokół XSL podsumowania programu FIM 2010 znajduje się w dodatku B: Domyślne podsumowanie XSL w dalszej części tego dokumentu.
<my:XmlDataSource my:Name="summaryTransformXsl">
Insert valid XSL code here
</my:XmlDataSource>
Schemat źródeł danych
Następujący schemat XSD generuje dwa typy źródeł danych:
<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>
Element zdarzenia
Element zdarzenia definiuje zmieniający się stan kontrolki. Rozszerzalność tej funkcji jest ograniczona, ponieważ nie można napisać dostosowanej funkcji (obsługi) w celu zdefiniowania zachowania po wyzwoleniu zdarzenia. Tego samego elementu Zdarzenia można użyć w elemecie Panel. Aby uzyskać więcej informacji, zobacz sekcję Panel w dalszej części tego dokumentu.
Poniżej przedstawiono schemat XSD elementu 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>
zdarzeń jest pustym elementem i ma następujące atrybuty:
Nazwa: jest to unikatowa nazwa zdarzenia. Jedynym obsługiwanym zdarzeniem w ObjectControlConfiguration jest zdarzenie load. To zdarzenie jest wyzwalane po pierwszym załadowaniu strony.
programu obsługi: jest to unikatowa nazwa programu obsługi. Po wyzwoleniu zdarzenia zwykle wywoływana jest metoda programu w celu obsługi zmiany stanu kontrolki. Następujące przypadki nie są obsługiwane:
- Usuwanie istniejącej procedury obsługi z istniejącej kontrolki.
- Tworzenie nowej procedury obsługi.
- Dołączanie programu obsługi do istniejącej lub nowej kontrolki.
Poniżej przedstawiono przykład elementu Events:
<my:Events>
<my:Event my:Name="Load" my:Handler="OnLoad"/>
</my:Events>
Panel, element
Element Panel jest podstawowym elementem w układzie RCDC. Poniżej przedstawiono schemat XSD dla elementu 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>
Element panelu zawiera element cykliczny Grupowanie. Aby uzyskać więcej informacji, zobacz sekcję Grupowanie w tym dokumencie.
Element Panel ma następujące atrybuty:
Nazwa: nazwa panelu. Jest to wymagany atrybut typu ciągu.
DisplayAsWizard: ten atrybut jest obecnie przestarzały. Odpowiedni atrybut VerbContext w centrum danych RCDC określa, czy układ zasobu jest w trybie Kreatora lub w trybie karty. Jeśli jest ona ustawiona na 0 (tryb tworzenia), jest również w trybie Kreatora. W przeciwnym razie jest w trybie tabulacji. Aby uzyskać więcej informacji, zobacz Wprowadzenie do konfigurowania i dostosowywania portalu programu FIM w dokumentacji.
caption: ten atrybut jest obecnie przestarzały. Użytkownik może określić podpisy dla strony, dołączając grupę zawierającą tylko informacje nagłówka. Aby uzyskać więcej informacji, zobacz sekcję Grupowanie w tym dokumencie.
autovalidate: jest to opcjonalny atrybut logiczny. Po ustawieniu wartości true validation zostanie wyzwolona dla każdej kontrolki na bieżącej karcie. Domyślnie, jeśli brakuje atrybutu, jest ustawiony na wartość true. Można go używać w połączeniu z właściwością RegularExpression. Aby uzyskać więcej informacji, zobacz sekcję "RegularExpression" w dalszej części tego dokumentu.
Element grupowania
Element grupowania definiuje ogólny układ panelu. Działa jako kontener, który grupuje poszczególne kontrolki w różne sekcje i karty. Poniżej przedstawiono schemat XSD elementu Grupowanie:
<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>
Istnieją trzy typy elementów grupowania:
grupowanie nagłówków: grupowanie nagłówków jest opcjonalne. W panelu może istnieć tylko jedno grupowanie nagłówków. Grupowanie nagłówków jest wyświetlane w górnej części panelu jako podpis. W tym grupowaniu można używać tylko jednego kontrolera UocCaptionControl. Aby zapoznać się z przykładem grupowania nagłówków, zobacz sekcję Przykład.
grupowanie zawartości: wymagane jest co najmniej jedno grupowanie zawartości. W panelu może istnieć wiele grupowania zawartości. Grupowanie zawartości jest wyświetlane jako główna zawartość strony RCDC. Każde grupowanie zawartości jest wyświetlane jako karta w tym samym panelu i może zawierać od 1 do 256 kontrolek. Zobacz sekcję Przykłady, aby zapoznać się z przykładem grupowania zawartości.
grupowanie podsumowań: grupowanie podsumowań jest opcjonalne. W panelu może znajdować się tylko jedno grupowanie podsumowań. Grupowanie podsumowań jest wyświetlane jako ostatnia karta panelu. W grupowaniu podsumowań można użyć tylko jednego kontrolki UocHtmlSummary, aby wyświetlić zmiany wprowadzone przez użytkownika przed przesłaniem żądania. Zobacz sekcję Przykłady, aby zapoznać się z przykładem grupowania podsumowań.
Każdy typ grupowania zawiera następujące elementy:
Pomoc: ten element zawiera tekst Pomocy na karcie. Możesz również użyć go, aby dodać link do pliku Pomocy dla karty.
Controls: Aby uzyskać informacje na temat tego elementu, zobacz sekcję Kontrolka w tym dokumencie. Każde grupowanie musi mieć od 1 do 256 kontrolek włącznie, w zależności od typu grupowania.
Zdarzenia: aby uzyskać informacje o tym elemecie, zobacz sekcję Zdarzenia w tym dokumencie. Każde grupowanie może mieć jedno zdarzenie jako opcję. Zdarzenia obsługiwane w elemecie Grupowanie są następujące:
- BeforeLeave: to zdarzenie jest wyzwalane, gdy użytkownik jest gotowy do opuszczenia karty w grupowaniu zawartości.
- AfterEnter: to zdarzenie jest wyzwalane, gdy użytkownik jest gotowy do wprowadzenia karty w grupowaniu zawartości.
Grupowanie może zawierać następujące siedem atrybutów:
Nazwa: jest to wymagana nazwa grupowania. nazwa musi być unikatowa w panelu.
Caption: Caption jest wyświetlany jako podpis nagłówka w grupie nagłówków. Jest ona wyświetlana jako podpis karty grupowania Zawartość lub Podsumowanie.
Opis: opcjonalny atrybut ciągu Opis działa tylko wtedy, gdy jest używany w grupowaniu zawartości. Ten element umożliwia użytkownikowi końcowemu podanie szczegółowych informacji na tej samej karcie.
Uwaga
Jeśli ten atrybut jest używany w grupowaniu podsumowań, kod XML jest uznawany za nieprawidłowy. Jeśli ten atrybut jest używany w grupowaniu nagłówków, kod XML jest uznawany za prawidłowy, ale ignorowany.
włączone: opcjonalny atrybut logiczny enabled jest ustawiony na wartość true, gdy brakuje go. Jeśli wartość Enabled ma wartość false, użytkownik końcowy zobaczy kartę Wyłączone. Ten atrybut działa tylko w grupowaniu zawartości.
Uwaga
Jeśli ten atrybut jest używany w grupowaniu podsumowań, kod XML jest uznawany za nieprawidłowy. Jeśli ten atrybut jest używany w grupowaniu nagłówków, kod XML jest uznawany za prawidłowy, ale ignorowany.
Visible: możesz ukryć kartę strony RCDC lub jej nagłówek, ustawiając ten atrybut na false. Domyślnie ten opcjonalny atrybut typu logicznego jest ustawiony na wartość true. Ten atrybut działa tylko w przypadku grupowania zawartości.
Uwaga
Jeśli w panelu istnieje tylko jedno grupowanie zawartości, ta funkcja nie działa. Jeśli w panelu znajduje się więcej niż jedno grupowanie zawartości, zachowuje się zgodnie z wcześniejszym opisem.
IsHeader: ten atrybut jest opcjonalnym atrybutem logicznym określającym, czy grupowanie jest grupowaniem nagłówków. Jeśli ten atrybut nie zostanie określony, zostanie ustawiony na wartość false.
IsSummary: jest to opcjonalny atrybut logiczny określający, czy grupowanie jest grupowaniem podsumowania. Jeśli ten atrybut nie zostanie określony, zostanie ustawiony na wartość false.
Przykłady typów elementów grupowania
Ta sekcja zawiera przykłady elementu Groupings.
Przykład: grupowanie nagłówków
Na poniższej ilustracji przedstawiono przykładowe grupowanie nagłówków:
Poniższy kod XML generuje przykładowe grupowanie nagłówków. W kodzie XML grupowanie nagłówków jest obszarem z tekstem podpisu "Przykładowe grupowanie nagłówków".
<!--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-->
Przykład: grupowanie zawartości
Na poniższej ilustracji przedstawiono przykładowe grupowanie zawartości:
grupowania zawartości
Poniższy kod XML generuje przykładowe grupowanie zawartości. W kodzie XML grupowanie zawartości jest obszarem z tekstem podpisu "Przykładowe grupowanie zawartości".
<!--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-->
Przykład: Grupowanie podsumowań
Na poniższej ilustracji przedstawiono przykładowe grupowanie podsumowań:
grupowania podsumowań
Poniższy kod XML generuje przykładowe grupowanie podsumowań. W formacie XML grupowanie podsumowań jest obszarem z tekstem podpisu "Przykładowe grupowanie podsumowań".
<!--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-->
Element Pomocy
Element Pomoc może być dołączony do elementu Grupowanie lub Kontrolka jako opcjonalny element. Jeśli jest on używany w grupowaniu, musi być pierwszym używanym elementem. Zapewnia on tekstową pomoc dla użytkowników końcowych, aby pomóc im w dostarczaniu dokładnych informacji. Następujący schemat XSD jest przeznaczony dla elementu Pomoc:
<xsd:element name="Help">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:HelpText"/>
<xsd:attribute ref="my:Link"/>
</xsd:complexType>
</xsd:element>
Poniższy przykładowy kod XML generuje element Pomoc:
<my:Help my:HelpText="Some Help Text for Group Basic Info" my:Link="03e258a0-609b-44f4-8417-4defdb6cb5e9.htm#bkmk_grouping_GroupingBasicInfo" />
Control, element
Element Grupowanie zawiera co najmniej jeden element kontrolki. Kontrolki są głównymi elementami w centrum danych RCDC. Element Grupowanie można dostosować, definiując różne elementy kontrolki, które zawiera. Następujący schemat XSD jest przeznaczony dla elementu 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>
Element kontrolki zawiera następujące elementy:
Pomoc: ten element jest ignorowany. Działa tylko w grupie.
Właściwości niestandardowe: ten element nie jest obsługiwany.
Opcje: ten element jest używany tylko w połączeniu z kontrolkami UocDropDownList lub UocRadioButtonList. Nie działa z innymi kontrolkami. Zobacz sekcję Opcje w tym dokumencie, aby zapoznać się ze strukturą tego elementu. Zobacz sekcję Poszczególne kontrolki tego dokumentu, aby zobaczyć, jak opcje są używane przez kontrolkę.
Przyciski: ten element jest używany tylko w połączeniu z kontrolką UocListView. Nie działa w przypadku innych kontrolek. Aby uzyskać więcej informacji, zobacz sekcję UocListView w tym dokumencie.
Właściwości: ten element jest używany we wszystkich kontrolkach do określania dodatkowych zachowań kontrolki. Aby uzyskać informacje na temat tego elementu, zobacz sekcję Właściwości w tym dokumencie.
Events: Aby uzyskać strukturę tego elementu, zobacz sekcję Zdarzenia we wcześniejszej części tego dokumentu. Zobacz sekcję Poszczególne kontrolki tego dokumentu, aby zobaczyć, które zdarzenia są używane w kontrolce.
Element kontrolki może zawierać następujące 10 atrybutów:
Nazwa: jest to nazwa kontrolki. Nazwa kontrolki musi być unikatowa w każdym panelu. Jest to wymagany atrybut typu ciągu.
TypeName: ten atrybut określa typ kontrolki. Jest to wymagany atrybut typu ciągu. Zobacz sekcję Poszczególne kontrolki w tym dokumencie dla każdej nazwy kontrolki.
Caption: możesz użyć tego atrybutu, aby dołączyć podpis kontrolki. Podpis jest zwykle nazwą wyświetlaną danych, które kontrolka wyświetla lub wprowadza. Możesz jawnie określić wartość dla podpisu lub powiązać ją z informacjami o nazwie wyświetlanej atrybutu schematu. Podpis pojawia się po lewej stronie kontrolki o normalnym rozmiarze. Jeśli kontrolka jest obejmująca pełny ekran, podpis pojawi się nad kontrolką. Jest to opcjonalny atrybut typu ciągu. Aby uzyskać informacje o sposobie powiązania źródła danych z atrybutem lub wartością właściwości, zobacz sekcję Właściwości.
W poniższym przykładzie pokazano, jak można jawnie użyć podpisu:
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias">…<my:Control/>W poniższym przykładzie pokazano, jak można używać podpisu ze źródłem danych. Jeśli użyto szablonu dla źródła danych pokazanego wcześniej w tym dokumencie, źródło danych jest schematem. Zalecamy powiązanie atrybutu DisplayName z atrybutem Caption.
<my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}">…<my:Control/>włączone: jest to opcjonalny atrybut typu logicznego. Ustawiając tę wartość atrybutu na false, użytkownik może wyłączyć kontrolkę. Wartość domyślna jest ustawiona na true.
Visible: jest to opcjonalny atrybut typu logicznego. Tego atrybutu można użyć do ukrycia całej kontrolki. Wartość domyślna jest ustawiona na true.
Opis: użyj tego opcjonalnego atrybutu typu ciągu, aby uwzględnić opis, aby ułatwić użytkownikowi końcowemu zrozumienie, co należy umieścić w kontrolce lub co robi kontrolka. Możesz jawnie określić wartość opisu lub powiązać ją z informacjami o opisie atrybutu schematu.
Opis jest wyświetlany po lewej stronie kontrolki o normalnym rozmiarze pod podpisem. Jeśli kontrolka jest obejmująca pełny ekran, opis pojawia się w górnej części kontrolki pod podpisem. Aby uzyskać informacje o sposobie powiązania źródła danych z atrybutem lub wartością właściwości, zobacz sekcję Właściwości w tym dokumencie.
W poniższym przykładzie pokazano, jak można jawnie użyć opisu:
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias" my:Description="This is explicit description.">…<my:Control/>W tym przykładzie pokazano, jak można użyć opisu ze źródłem danych. Jeśli użyto szablonu dla źródła danych pokazanego wcześniej w tym dokumencie, źródło danych jest schematem. Zalecamy powiązanie atrybutu Opis z atrybutem Opis.
<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: ten atrybut wskazuje, czy kontrolka obejmuje pełny ekran. Jest to opcjonalny atrybut typu logicznego. Wartość domyślna jest ustawiona na false.
Uwaga
Atrybuty Podpis i Opis są wyłączone, gdy ten atrybut ma wartość true. Użyj kontrolki UocLabel, aby podać podpis dla rozszerzonej kontrolki.
Wskazówka: jest to opcjonalny atrybut typu ciągu. Tekst w atrybucie Wskazówka pomaga użytkownikowi końcowego zdecydować, co jest prawidłowym wejściem dla kontrolki. Pod kontrolką zostanie wyświetlona wskazówka.
autopostback: jest to opcjonalny atrybut typu logicznego. Wartość domyślna to false. Jeśli ustawiono wartość false, odświeżanie strony może nie odświeżyć kontrolki. Aby uzyskać informacje o autopostback, poszukaj właściwości kontrolki interfejsu użytkownika platformy Microsoft ASP.NET o tej samej nazwie.
RightsLevel: jest to opcjonalny atrybut typu ciągu. Ten atrybut można powiązać tylko z prawami wbudowanymi ze źródłem danych. Kontrolka jest dynamicznie włączana lub wyłączana na podstawie praw użytkownika. Aby uzyskać informacje o sposobie powiązania źródeł danych z atrybutem lub wartością właściwości, zobacz sekcję Właściwości w tym dokumencie.
W tym przykładzie pokazano, jak można użyć atrybutu RightsLevel ze źródłem danych. Jeśli użyto szablonu dla źródła danych pokazanego wcześniej w tym dokumencie, źródło danych jest praw. Użyj nazwy atrybutu jako ścieżki.
Element właściwości
Możesz użyć elementu Property, aby jeszcze bardziej dostosować zachowanie każdej kontrolki. Właściwość jest pustym elementem. Następujący schemat XSD jest przeznaczony dla elementu 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>
Każda właściwość ma następujące dwa wymagane atrybuty:
Nazwa: ten atrybut typu ciągu jest unikatową nazwą właściwości. Różne kontrolki mają różne właściwości. Istnieje kilka typowych właściwości, które mogą być używane przez wszystkie kontrolki. Aby uzyskać więcej informacji na temat nazw dostępnych dla danej kontrolki, zobacz sekcje Common properties (Wspólne właściwości) i Individual controls (Poszczególne kontrolki) tego dokumentu.
wartość: jest to wartość właściwości. Typ danych wartości zależy od właściwości, do której jest przypisana. Aby uzyskać informacje o określonych właściwościach, zobacz następującą sekcję dotyczącą dozwolonego formatu wartości.
Wiązanie właściwości z zawartością źródła danych
Niektóre właściwości można powiązać z informacjami ze źródła danych. Użyj następującego formatu ciągu, aby ustawić to powiązanie. Zapoznaj się z opisem poszczególnych właściwości w sekcji Poszczególne kontrolki tego dokumentu, aby dowiedzieć się, jak powiązać właściwości ze źródłem danych.
<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.
Poniższy kod XML pokazuje, jak powiązać źródło danych z elementem 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}"/>
Wspólne właściwości
Wszystkie kontrolki RCDC określone w tym dokumencie mogą mieć typowe właściwości opisane w tej sekcji. Można użyć tych właściwości wraz z innymi właściwościami specyficznymi dla różnych kontrolek.
Wymagane: ta właściwość wskazuje, że pole jest polem wymaganym lub polem opcjonalnym. Wymagane pole musi być wypełnione wartością. Pusta wartość nie jest obsługiwana dla danych wejściowych ciągu. Pole opcjonalne może być puste. Jeśli to pole jest polem wymaganym bez wypełnionej wartości, w kontrolce wejściowej pojawi się komunikat o błędzie. Możesz jawnie określić, czy pole jest wymagane, czy opcjonalne. Możesz również powiązać pole z informacjami o schemacie danego powiązania między atrybutem a typem zasobu. Domyślnie, jeśli brakuje tej właściwości, oznacza to, że kontrolka jest opcjonalną kontrolką wejściową.
W poniższym przykładzie użyto jawnej wartości dla tej właściwości:
<my:Property my:Name="Required" my:Value="True"/>Jest to przykład, który używa dynamicznego źródła danych dla tej właściwości. Jeśli użyto szablonu dla źródła danych pokazanego w poprzedniej sekcji tego dokumentu, źródło danych jest schematem. Użyj
<attribute name>.Requiredjako ścieżki.<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>readOnly: przez ustawienie tej właściwości na wartość true użytkownik końcowy używa kontrolki w trybie tylko do odczytu. Jest to opcjonalny atrybut typu logicznego. Wartość domyślna jest ustawiona na false. Jednak czasami zachowanie tej właściwości jest zastępowane przez typ praw, które osoba ma na danych powiązanych z kontrolką. Jeśli na przykład użytkownik nie ma uprawnień do aktualizowania pola, a pole jest powiązane z prawami wbudowanymi, użytkownik widzi dane w trybie tylko do odczytu, nawet jeśli ta właściwość jest ustawiona na wartość false.
RegularExpression: ta właściwość określa ograniczenia nałożone na wartość w kontrolce. Formaty tej wartości właściwości to formaty obsługiwane w standardzie .NET StringRegex. Aby uzyskać więcej informacji, zobacz .NET Framework Regular Expressions. Jeśli kontrolka jest używana do wprowadzania wartości, wartość jest sprawdzana względem ograniczenia określonego w tej właściwości, gdy użytkownik próbuje opuścić bieżącą stronę. Komunikat o błędzie pojawia się w górnej części kontrolki, która ma nieprawidłowe dane wejściowe. Użytkownik może jawnie określić wyrażenie regularne ciągu. Użytkownik może również powiązać go z informacjami o schemacie danego atrybutu. Domyślnie, jeśli brakuje tej właściwości, oznacza to, że kontrolka nie sprawdza żadnych ograniczeń dotyczących ciągów wejściowych.
W poniższym przykładzie użyto jawnej wartości dla tej właściwości:
<my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>Jest to przykład, który używa dynamicznego źródła danych dla tej właściwości. Jeśli użyto szablonu dla źródła danych pokazanego wcześniej w tym dokumencie, źródło danych jest schematem. Użyj
<attribute name>.StringRegexjako ścieżki.<my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=Alias.StringRegex, Mode=OneWay}"/>Visible: jest to opcjonalny atrybut typu logicznego. Tego atrybutu można użyć do ukrycia całej kontrolki. Wartość domyślna jest ustawiona na true.
Options, element
Element Options zawiera co najmniej jeden option podwęźle. Element Opcje jest używany tylko z kontrolkami UocRadioButtonList i UocDropDownList UocDropDownList. Aby uzyskać szczegółowe informacje na temat używania tych kontrolek, zobacz sekcję Poszczególne kontrolki w tym dokumencie.
Dla elementu Options znajduje się następujący schemat XSD:
<xsd:element name="Options">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Option">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Element opcje ma następujące atrybuty:
wartość: jest to wymagany atrybut typu ciągu. Atrybut value musi być unikatowy w ramach tej samej kontrolki. Można używać tylko znaków bez uwzględniania wielkości liter od A do Z.
caption: ten wymagany atrybut jest nazwą wyświetlaną każdej opcji.
wskazówka: jest to opcjonalny atrybut. Użyj tego atrybutu, aby podać więcej informacji i wskazówek dla użytkownika końcowego.
Zmienne środowiskowe
Następujące zmienne środowiskowe mogą być używane w dowolnej konfiguracji RCDC:
| Zmienna | Opis |
|---|---|
<LoginID> |
Wyświetla identyfikator użytkownika, który jest obecnie zalogowany. |
<LoginDomain> |
Wyświetla domenę użytkownika, który jest obecnie zalogowany. |
<Today> |
Wyświetla bieżącą datę i godzinę |
<FromToday_nnn> |
Wyświetla bieżącą datę oraz nnn i godzinę, w której nnn jest liczbą całkowitą. |
<ObjectID> |
Identyfikator zasobu podstawowego usługi RCDC. |
<Attribute_xxx> |
Zwraca określony atrybut xxx zasobu podstawowego RCDC. |
Debugowanie plików konfiguracji XML
Podczas opracowywania lub modyfikowania plików konfiguracji XML dla rcDC można zmniejszyć błędy, sprawdzając kod XML względem plików XSD przy użyciu edytora, takiego jak Microsoft Visual Studio. Aby uzyskać więcej informacji, zobacz Wprowadzenie do narzędzi XML w programie Visual Studio 2005.
Dostosowywanie plików Pomocy
Jeśli tworzysz nowe zasoby i atrybuty, możesz zaktualizować istniejące pliki Pomocy w portalu PROGRAMU FIM zawartością dostosowanych zasobów. Pliki pomocy w portalu programu FIM są w formacie .htm i można je edytować ręcznie. Aby uzyskać więcej informacji na temat tworzenia atrybutów niestandardowych, zobacz Wprowadzenie do niestandardowego zarządzania zasobami i atrybutami w dokumentacji programu FIM 2010.
Ważne
Informacje o podstawach formatowania lub edytowania kodu HTML nie zostały podane w tym artykule. Użytkownicy powinni wiedzieć, jak edytować pliki HTML.
Lokalizacja plików Pomocy
Wszystkie pliki Pomocy portalu programu Microsoft Identity Manager 2016 SP1 znajdują się w folderze <ProgramFiles>\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Layouts\MSILM2\Help\1033\html na serwerze usługi MIM.
Lokalizowanie określonego pliku Pomocy
Wszystkie pliki Pomocy portalu FIM mają nazwę o globalnie unikatowym identyfikatorze (GUID). Aby zlokalizować prawidłowy plik dla zasobu niestandardowego:
W portalu programu FIM otwórz plik Pomocy na stronie Portal, którą chcesz dostosować.
Kliknij prawym przyciskiem myszy plik Pomocy i wybierz pozycję właściwości .
Wyróżnij i skopiuj plik
<GUID\>.htmw polu adres URL .Przejdź do folderu, w którym są przechowywane pliki Pomocy i wyszukaj plik.
Dodawanie zawartości atrybutu w istniejącym elemecie Grupowanie
Aby dodać opisową zawartość dla nowego atrybutu w istniejącym elemecie Grupowanie (tab):
Zidentyfikuj i znajdź odpowiedni plik Pomocy.
Za pomocą edytora HTML otwórz plik.
Znajdź miejsce, w którym chcesz dodać zawartość. Zazwyczaj znajduje się to w dodatkowym akapicie, na przykład:
<p xmlns="">A new paragraph with customized information.</p>Może to być również element wstawiony do istniejącej listy, na przykład:
<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>
Dodawanie zawartości dla istniejącego elementu Grupowanie
Większość stron portalu programu FIM ma wiele elementów grupowania (lub kart), a towarzyszące pliki Pomocy zawierają sekcje zakładki odnoszące się do każdego elementu Grupowanie. Zakładki w kodzie HTML są określone w sekcjach. Na przykład jest to kod HTML dla karty Informacje o pracy z pliku Pomocy dla strony Tworzenie użytkownika w portalu PROGRAMU FIM:
<a name="bkmk_grouping_WorkInfo" xmlns=""></a><h3 class="subHeading" xmlns="">Work Info</h3><p class="subHeading" xmlns=""></p><div class="subSection" xmlns="">
Odwołuje się do niego element Grouping WorkInfo w pliku XML danych konfiguracji dla Configuration for User Creation RCDC. Nazwa pliku \<GUID\>.htm i zakładka są określone w parametrze 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"/>
Proste przykłady kontrolek
Ta sekcja zawiera przykłady tworzenia różnych prostych kontrolek pól tekstowych.
Na poniższej ilustracji przedstawiono kilka prostych kontrolek pola tekstowego w różnych trybach:
Poniższy segment kodu tworzy pierwszą kontrolkę pola tekstowego, która używa jawnego tekstu dla wszystkich atrybutów i właściwości:
<!-- 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.-->
Poniższy segment kodu tworzy drugą kontrolkę pola tekstowego, która używa techniki powiązania dynamicznego w celu połączenia kontrolki z innym źródłem danych:
<!-- 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.-->
Poniższy segment kodu tworzy trzecią rozszerzoną etykietę i kontrolkę pola tekstowego:
<!-- 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.-->
Poniższy segment kodu tworzy czwartą wyłączoną kontrolkę pola tekstowego. Mimo że ta kontrolka nie wyświetla widocznej różnicy między stanem wyłączonym a stanem włączonym, użytkownik nie może już wprowadzać danych w polu tekstowym.
<!-- 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.-->
Poszczególne kontrolki
W tej sekcji opisano poszczególne kontrolki dostarczane z programem Microsoft Identity Manager 2016 SP1.
UocButton
nazwa: UocButton
Opis: jest to prosta kontrolka przycisku, której można użyć do wyzwalania określonych akcji. Jednak ponieważ nie można określić własnej procedury obsługi, korzystanie z tej kontrolki jest ograniczone.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
tekst: ta właściwość określa tekst wyświetlany na przycisku. Jest to opcjonalny atrybut typu ciągu. Tekst przyjmuje jawną wartość ciągu.
zdarzenia:
- OnButtonClicked: zdarzenie jest emitowane po kliknięciu przycisku.
Przykład:
Poniższy segment XML tworzy prosty przycisk kontrolki UocButton:
<!--Sample enabled simple button control-->
<my:Control my:Name="ButtonControl" my:TypeName="UocButton" my:Caption="SampleButton" my:Description="This is a simple button."
my:Hint="Click the button">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="Text" my:Value="Click Me"/>
</my:Properties>
</my:Control>
<!--End of sample enabled simple button control -->
UocCaptionControl
nazwa: UocCaptionControl
Opis: ta kontrolka służy do wyświetlania podpisu strony RCDC. Ta kontrolka została zaprojektowana tak, aby była używana tylko jako pojedyncza kontrolka w grupowaniu nagłówków. Użycie go w innym kontekście może powodować problemy z renderowaniem lub błędy portalu.
tryb: tylko do odczytu (OneWay)
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
MaxHeight: Ta właściwość określa maksymalną wysokość ikony w sekcji podpisów. Ta właściwość jest opcjonalna. Ta właściwość przyjmuje wartość całkowitą w pikselach. Wartość domyślna to 32 piksele.
zdarzenia:
- Nie ma żadnych zdarzeń dla tej kontrolki.
Przykład:
Poniższy segment kodu generuje podpis nagłówka:
<!--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-->
Poniższy segment kodu generuje Jawny podpis zawartości:
<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-->
Następujący segment kodu generuje nazwa wyświetlana podpis dynamiczny:
<!--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
nazwa: UocCheckBox
opis: jest to prosta kontrolka pola wyboru. Zalecamy, aby użytkownik powiązał tę kontrolkę z danymi typu logicznego. Tej kontrolki można używać jako kontrolki tylko do odczytu lub kontrolki możliwej do aktualizacji na podstawie danych, z którymi jest powiązana.
Uwaga
W tej wersji, w przypadku używania kontrolki pola wyboru w trybie edycji do wyświetlania atrybutu logicznego, jeśli atrybut nie ma wcześniej przypisanej wartości, kontrolka zasobów dodaje wartość false do atrybutu, gdy OK jest klikany w trybie edycji. Obejście polega na zawsze utworzeniu atrybutu logicznego, który zakłada, że brak istnienia jest taki sam jak falselub użyj innych kontrolek, takich jak przycisk radiowy dla atrybutów logicznych.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
DefaultValue: jest to opcjonalna właściwość typu logicznego. Wartość domyślna jest ustawiona na false. To pole określa domyślne zachowanie pola wyboru. Można to określić jawnie.
Sprawdzono: jest to opcjonalna właściwość typu logicznego. Wartość domyślna jest ustawiona na false. Ta wartość zastępuje właściwość DefaultValue, gdy jest obecna wraz z wartością DefaultValue. To pole określa zachowanie pola wyboru. Podobnie jak DefaultValue, można to określić jawnie lub powiązać z danymi z serwera.
tekst: jest to opcjonalny atrybut typu ciągu. Tekst jest wyświetlany po prawej stronie pola wyboru. Za pomocą tej właściwości można określić tekst, który zawiera więcej informacji dla użytkownika końcowego.
zdarzenia:
- CheckedChanged: gdy pole wyboru zmienia jego stan, to zdarzenie jest emitowane.
Przykład:
W poniższym przykładzie jest tworzone powiązanie niestandardowe między typem zasobu niestandardowego a atrybutem IsConfigurationType. Kod XML jest używany w centrum danych RCDC niestandardowego typu zasobu.
Poniższy segment kodu tworzy dynamiczne pole wyboru , jak pokazano dynamiczne pole wyboru na poprzedniej ilustracji. Ten typ powiązania jest bardziej wszechstronny i przydatny niż jawne pole wyboru. Atrybut musi należeć do bieżącego typu zasobu.
<!--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
Nazwa: UocCommonMultiValueControl
Opis: jest to wielowierszowa kontrolka pola tekstowego, która obsługuje specjalne formatowanie ciągów. Każda wartość wśród wielowartościowych wpisów jest oddzielona od siebie średnikiem (;) lub podziałem wiersza w polu tekstowym. Zalecamy powiązanie tej kontrolki z danymi wielowartościowymi, krótkimi ciągami i liczbami całkowitymi. Ta kontrolka obsługuje zarówno tryb tylko do odczytu, jak i tryb aktualizowalny.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
typ danych: jest to wymagany atrybut typu ciągu. Można to określić jako ciąg , liczba całkowitalub typu data/godzina jawnie. Można również powiązać atrybut z właściwością DataType atrybutu schematu. Typ odwołania wielowartościowego powinien być obsługiwany przez UOCListView lub UOCIdentityPicker. Wartość logiczna wielowartościowa nie jest obsługiwanym typem danych.
Wiersze: jest to opcjonalny atrybut typu liczba całkowita. Wysokość pola można zdefiniować w postaci liczby znaków. Wartość domyślna jest ustawiona na 1.
Kolumny: jest to opcjonalny atrybut typu liczba całkowita. Można zdefiniować, ile szerokości pola ma liczba znaków. Wartość domyślna jest ustawiona na 20.
wartość: jest to opcjonalny atrybut typu ciągu. Ten atrybut można powiązać tylko ze źródłem danych.
zdarzenia:
- ValueListChanged: to zdarzenie jest wyzwalane, gdy bieżąca wartość kontrolki ulegnie zmianie.
Przykład:
W poniższym przykładzie jest tworzony atrybut ciągu wielowartościowego o nazwie AMultiValueString i powiązany z niestandardowym typem zasobu. Ten przykład działa tylko po utworzeniu tego powiązania.
Poniższy segment kodu generuje kontrolkę 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
nazwa: UocDateTimeControl
Opis: jest to podobne do kontrolki pola tekstowego, ale Opis akceptuje tylko określony format. W trybie tylko do odczytu jest wyświetlana etykieta. Aby uzyskać format obsługiwanego ciągu wejściowego, zobacz właściwość DateTimeFormat w tej sekcji.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
DateTimeFormat: jest to opcjonalny atrybut typu ciągu. Obsługiwane formaty to DateTime i DateOnly. Wartość domyślna jest ustawiona na format DateTime.
data/godzina: atrybut jest sformatowany jako mm/dd/rrrr hh:mm:ss AM.
DateOnly: Atrybut jest sformatowany jako mm/dd/rrrr.
Uwaga
Obsługiwane są formaty datetime i DateOnly niezależnie od użytkownika określającego różnicę.
wartość: jest to opcjonalny atrybut typu ciągu. Ten atrybut jest powiązany ze źródłem danych zasobów. Wartość tego atrybutu musi być zgodna z poprawnym formatem daty/godziny.
zdarzenia:
- dateTimeChanged: gdy wartość daty/godziny zmieni się, zdarzenie występuje.
Przykład:
Poniższy segment kodu tworzy pierwszą kontrolkę 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 -->
Poniższy segment kodu tworzy drugą kontrolkę DateTime. Jeśli użyto przykładowego kodu w sekcji Źródła danych, atrybut ExpirationTime jest powiązany ze wszystkimi typami zasobów. W związku z tym można go użyć z następującym kodem:
<!--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
nazwa: UocDropDownList
Opis: jest to prosta kontrolka pola listy rozwijanej. Ta kontrolka służy do wybierania opcji ze zdefiniowanego zestawu opcji. Typy danych typu ciąg, liczba całkowita, data/godzina i wartość logiczna są dobrymi kandydatami do tej kontrolki.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
ValuePath: właściwość do pobrania atrybutu Value z elementu ItemSource. Gdy element ItemSource jest określony jako Niestandardowy, ścieżka wartości jest ustawiona na Wartość. Wiąże się on z polem Value z elementu Option, zgodnie z opisem w tej sekcji.
CaptionPath: właściwość do pobrania atrybutu Value z elementu ItemSource. Gdy element ItemSource jest określony jako Niestandardowy, ścieżka wartości jest ustawiona na Wartość Podpis. Wiąże się on z polem Caption z elementu Option, zgodnie z opisem w tej sekcji.
HintPath: właściwość do pobrania atrybutu Value z elementu ItemSource. Gdy element ItemSource jest określony jako Niestandardowy, ścieżka wartości jest ustawiona na Wartość Wskazówka. Wiąże się on z polem Wskazówka z elementu Option, zgodnie z opisem w tej sekcji.
ItemSource: kolekcja listControlItems, która definiuje opcje na liście. Użytkownik może jawnie ustawić tę wartość na Wartość niestandardową i użyć elementu Opcja, zgodnie z opisem w tej sekcji, aby określić wartość ciągu.
SelectedValue: wybrana wartość. Jest to wymagana właściwość typu ciągu. Ta właściwość jest powiązana z danymi ciągu ze źródła danych.
zdarzenia:
- SelectedIndexChanged: zdarzenie występuje, gdy wybór w polu listy rozwijanej ulegnie zmianie.
Opcje:
Aby uzyskać strukturę elementu opcje, zobacz Options, element.
wartość: Wartość pojedynczego elementu Opcje można ustawić na dowolny ciąg, który jest prawidłowym wejściem źródła danych, z którymi wiąże się kontrolka.
Podpis: Podpis może być dowolną wartością ciągu.
Wskazówka: Wskazówka może być dowolną wartością ciągu.
Przykład:
opcje 
Uwaga
Aby wykonać przykładową pracę, należy powiązać istniejący atrybut typu ciągu Zakres z niestandardowym typem zasobu, do którego ma zastosowanie centrum danych RCDC.
Następujący segment kodu generuje listę rozwijaną:
<!--Sample for drop-down list control-->
<my:Control my:Name="Scope" my:TypeName="UocDropDownList" my:Caption="{Binding Source=schema, Path=Scope.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Scope}">
<my:Options>
<my:Option my:Value="DomainLocal" my:Caption="Domain Local" my:Hint="to secure a local resource (i.e. a file share on your computer)" />
<my:Option my:Value="Global" my:Caption="Global" my:Hint="to secure resources across your team or division" />
<my:Option my:Value="Universal" my:Caption="Universal" my:Hint="to use this group across your organization" />
</my:Options>
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Scope.Required" />
<my:Property my:Name="ValuePath" my:Value="Value" />
<my:Property my:Name="CaptionPath" my:Value="Caption" />
<my:Property my:Name="HintPath" my:Value="Hint" />
<my:Property my:Name="ItemSource" my:Value="Custom" />
<my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=Scope, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for drop-down list control-->
UocFileDownload
nazwa: UocFileDownload
Opis: ta kontrolka zawiera hiperłącze. Po kliknięciu hiperlinku zostanie wyświetlona strona Zapisz plik systemu Windows. Użytkownik może zapisać plik na dysku lokalnym. Opcja Otwórz jest również obsługiwana, jeśli program Internet Explorer może renderować format pliku. Zalecane typy danych do użycia z tą kontrolką to formatowane ciągi (XML) i typy binarne.
Uwaga
W tej wersji programu Microsoft Identity Manager 2016 SP1 użytkownik musi zamknąć okno programu Internet Explorer, w którym otworzył plik, a następnie odświeżyć stronę. Po odświeżeniu okna programu Internet Explorer użytkownik może następnie uruchomić pobieranie, aby zapisać lub otworzyć ten sam plik ponownie w oryginalnym oknie.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
tekst: jest to opcjonalny atrybut typu ciągu definiujący tekst hiperłącza. Użytkownik może określić jawny ciąg dla tej właściwości.
wartość: jest to wymagany atrybut. Określa powiązanie atrybutów na serwerze, którego zawartość ma zostać pobrana.
PromptedFileName: jest to opcjonalny atrybut typu ciągu. Jest to nazwa pliku sugerowana użytkownikowi podczas zapisywania pobranego pliku.
ContentType: jest to wymagany atrybut typu ciągu. Jest to typ pliku, w który są zapisywane dane. Tekst lub plik binarny to dwie obsługiwane opcje ciągów. Jeśli jest to tekst, zwracana wartość jest traktowana jako długi ciąg. W przeciwnym razie w przypadku danych binarnych wartość zwracana jest uważana za bajt[]. Jeśli tekst jest zaznaczony, użytkownik może, jako opcję, dodać sufiks, aby określić typ formatu tekstu. Na przykład tekst/xml jest prawidłowy.
Uwaga
Gdy wartość powiązana z tą kontrolką jest pusta, brakuje hiperlinku do wyzwolenia akcji pobierania. Jest to spowodowane tym, że nie ma nic do pobrania.
zdarzenia:
- Nie ma żadnych zdarzeń dla tej kontrolki.
Przykład:
Uwaga
Przed przekazaniem tego przykładowego pliku użytkownik musi utworzyć powiązanie między niestandardowym typem zasobu a istniejącym atrybutem ConfigurationData.
Następujący segment kodu generuje kontrolkę pobierania plików:
<!--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
nazwa: UocFileUpload
Opis: ta kontrolka zawiera pole tekstowe, które wyświetla lokalizację pliku lokalnego do przekazania, przycisk przeglądania pliku i przycisk przekazywania. Gdy użytkownik końcowy kliknie przycisk Przeglądaj, zostanie wyświetlone okno Otwórz plik systemu Windows. Użytkownik końcowy może wybrać jeden plik na dysku lokalnym do przekazania. Po wybraniu pliku lokalizacja pliku jest wyświetlana w polu tekstowym. Po kliknięciu przycisku Przekaż plik zostanie przekazany do lokalnego źródła danych po stronie klienta. Zawartość pliku nie została jeszcze przesłana na serwer. Zalecane typy danych do użycia z tą kontrolką są następujące: sformatowany ciąg (XML) lub typy binarne.
Uwaga
Brak oznak postępu lub stanu przekazywania. Po przekazaniu pliku do lokalnego źródła danych pole tekstowe zostanie wyczyszczone.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
wartość: jest to wymagany atrybut. Określa powiązanie atrybutu schematu na serwerze, do którego są przekazywane dane.
ContentType: jest to opcjonalny atrybut typu ciągu. Jest to typ danych, do którego plik jest zapisywany na serwerze. Można to ustawić na tekst lub plik binarny. Gdy brakuje właściwości, wartość domyślna to Binary.
MaxFileSize: jest to opcjonalny atrybut typu ciągu. MaxFileSize definiuje, jak duży może być przekazany rozmiar pliku. Domyślnie, jeśli brakuje właściwości, maksymalny rozmiar to 1 megabajt (MB).
PromptedForNoValue: jest to opcjonalny atrybut typu ciągu. Definiuje on tekst, który pojawia się użytkownikowi, gdy plik nie jest przekazywany.
zdarzenia:
- FileUploaded: to zdarzenie jest emitowane po pomyślnym przekazaniu pliku.
Przykład:
Uwaga
Aby wykonać następującą przykładową pracę kodu, należy utworzyć nowy atrybut typu binarnego o nazwie ABinaryAttribute, a następnie utworzyć nowe powiązanie między niestandardowym typem zasobu a tym atrybutem.
Następujący segment kodu generuje kontrolkę przekazywania:
<!--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
nazwa: UocFilterBuilder
Opis: jest to złożona kontrolka, która umożliwia użytkownikowi renderowanie wyrażenia XPath programu MIM 2016. Niektóre wyrażenia XPath nie są obsługiwane. Aby uzyskać informacje o sposobie korzystania z konstruktora filtrów, zobacz Pomoc dla konstruktora filtrów.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
PermittedObjectTypes: definiuje listę typów zasobów, które mają być wyświetlane w instrukcji select konstruktora filtru. Aby uzyskać informacje o sposobie korzystania z konstruktora filtrów, zobacz Pomoc konstruktora filtrów. Ciąg jest w formacie ResourceTypeA, ResourceTypeB, gdzie każdy typ zasobu jest oddzielony przecinkiem ",".
wartość: jest to wartość, za pomocą której konstruktor filtru jest renderowany. Obsługiwane jest tylko powiązanie z danymi typu ciągu, które zawiera wyrażenie XPath. Atrybut Filter jest zalecanym atrybutem do powiązania tej kontrolki.
PreviewButtonVisible: jest to opcjonalna właściwość typu logicznego. Gdy ta właściwość ma wartość false, użytkownik nie widzi przycisku Podgląd. Wartość domyślna jest ustawiona na true. Tego przycisku można używać w połączeniu z kontrolką widoku listy, aby wyświetlić podgląd wyników wyrażenia XPath.
ExcludeGroupMembership: jest to właściwość logiczna. Jeśli ta właściwość ma wartość true, nie można utworzyć filtru używającego <atrybutu odwołania> (na przykład ResourceID) jest elementem członkowskim obiektu grupy <>. Innymi słowy, jeśli ta właściwość jest ustawiona na true, nie można utworzyć filtru używającego katalogu członkostwa w grupie.
PreviewButtonCaption: jest to opcjonalny ciąg. Gdy właściwość PreviewButtonVisible ma wartość true, możesz użyć tej właściwości, aby nadać przyciskowi dostosowany tekst. Tekst zostanie wyświetlony na przycisku Podgląd.
zdarzenia:
- OnFilterChanged: to zdarzenie jest wyzwalane po zmianie zawartości konstruktora filtru.
Przykład:
Poniższy przykładowy kod zawiera kontrolkę UOCLabel, prosty konstruktor filtrów z wartością PermittedObjectTypes i widok listy w wersji zapoznawczej. Wskaż właściwość ListFilter widoku listy i właściwość Value konstruktora filtru do tego samego atrybutu źródła danych, aby połączyć te dwie wartości.
Uwaga
Przed użyciem tego przykładowego kodu utwórz nowe powiązanie między istniejącym atrybutem Filtr a niestandardowym typem zasobu.
<!--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
nazwa: UocHtmlSummary
Opis: tej kontrolki można użyć do zdefiniowania strony podsumowania na stronie RCDC. Ta strona podsumowania zostanie wyświetlona po przesłaniu żądania przez użytkownika końcowego. Tej kontrolki można używać tylko w grupowaniu podsumowań i musi być jedyną kontrolką. Zdecydowanie zalecamy użycie dostarczonego przykładowego kodu.
Uwaga
Ta kontrolka nie została przetestowana w szerokim zakresie.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
ModyfikacjeXml: ta właściwość musi być sformatowana jako {Binding Source=delta, Path=DeltaXml}, gdzie funkcja delta jest zdefiniowana w nagłówku konfiguracji ObjectDataSource.
TransformXsl: ta właściwość jest formatowana jako {Binding Source=summaryTransformXsl, Path=/}, gdzie summaryTransformXsl jest definiowana w nagłówku konfiguracji XmlDataSource.
zdarzenia:
- Nie ma żadnych zdarzeń dla tej kontrolki.
Przykład:
Aby zapoznać się z przykładem tej kontrolki, zobacz przykład grupowania podsumowań w sekcji Element grupowania w tym dokumencie.
UocHyperLink
nazwa: UocHyperLink
Opis: jest to prosta kontrolka hiperłącza. Za pomocą tej kontrolki można wyświetlać informacje jako hiperlink.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
ObjectReference: jest to opcjonalna właściwość typu odwołania. Jeśli prawidłowy zasób jest przywołyny przez identyfikator GUID zdefiniowany w tej właściwości, hiperlink udostępnia użytkownikowi końcowemu sposób uzyskiwania dostępu do zasobu. Jest to wzajemnie wykluczające się z właściwością NavigateUrl.
tekst: jest to opcjonalna właściwość typu ciągu. Ta właściwość służy do definiowania tekstu wyświetlanego jako hiperłącze.
NavigateUrl: jest to opcjonalna właściwość typu ciągu. Ta właściwość służy do definiowania adresu URL pełnej ścieżki, z którym hiperlink łączy. Jest to wzajemnie wykluczające się z właściwości ObjectReference.
zdarzenia:
- Nie ma żadnych zdarzeń dla tej kontrolki.
Przykład:
Uwaga
Aby połączyć ten zasób, potrzebny jest prawidłowy identyfikator GUID zasobu. W takim przypadku drugie hiperłącze jest generowane przy użyciu prawidłowego identyfikatora GUID. Pierwsza może być dowolną witryną sieci Web.
Następujący segment kodu generuje hiperlink przekierowania:
<!--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-->
Poniższy segment kodu generuje hiperlink, który odwołuje się do zasobu. Jawne odwołanie można zastąpić wyrażeniem {Binding Source=object, Path=Creator}, aby powiązać to ze źródłem danych. Może to być prawidłowe tylko wtedy, gdy menedżer zasobu istnieje i ma wartość typu odwołania.
<!--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
nazwa: UocIdentityPicker
Opis: ta kontrolka składa się z opcjonalnego pola Rozpoznawanie i okna przeglądania. Opcjonalne pole Rozpoznawanie składa się z opcjonalnego pola tekstowego umożliwiającego wprowadzenie tożsamości, przycisku Rozwiąż w celu rozpoznania tożsamości oraz przycisku Przeglądaj w celu wyświetlenia wyskakującego okna Przeglądania. Okno Przeglądanie umożliwia użytkownikowi wybranie tożsamości za pomocą kontrolki widoku listy. Wybrana tożsamość z okna Przeglądaj jest odzwierciedlona w polu Rozwiąż.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
UsageKeywords: jest to opcjonalna właściwość ciągu. Listę zakresów wyszukiwania, które mają być używane w selektorze zasobów, można zdefiniować, podając listę słów kluczowych użycia obsługiwanych przez strukturę SearchScopeConfiguration, gdzie każde słowo kluczowe jest oddzielone apostrofem (').
filtru: jest to opcjonalna właściwość ciągu. Użytkownik udostępnia wyrażenie XPath w celu określenia zakresu selektora zasobów w celu wyświetlenia tylko elementów pasujących do zdefiniowanego zakresu. Ta właściwość wzajemnie wyklucza się z właściwością UsageKeywords. Po zastosowaniu zakresu wyszukiwania ta właściwość nie ma wpływu.
ResultObjectType: jest to opcjonalna właściwość ciągu. Typ zasobu służy do renderowania zasobów na wyskakującym oknie dialogowym. Jest on używany z filtrem, aby ułatwić selektorowi tożsamości identyfikowanie typu zasobu zwracanego przez filtr i renderowanie odpowiednio danych. Ta właściwość wzajemnie wyklucza się z właściwością UsageKeywords. Po zastosowaniu zakresu wyszukiwania nie ma to żadnego efektu. Ciąg akceptowany dla tej właściwości to dowolna, prawidłowa, prawidłowa nazwa typu zasobu, na przykład Person. Gdy oczekuje się, że filtr zwróci wiele typów zasobów, używany jest zasób.
PreviewTitle: jest to tytuł wersji zapoznawczej używany w widoku listy. Aby uzyskać informacje o tej właściwości, zobacz sekcję UocListView.
ListViewTitle: jest to opcjonalna właściwość ciągu. Za pomocą tej właściwości można zdefiniować tekst wyświetlany na początku widoku listy jako tytuł.
wartość: jest to opcjonalna właściwość ciągu. Zaleca się powiązanie tego z atrybutem schematu w celu połączenia wartości ze źródłem danych.
Tryb: jest to opcjonalna właściwość ciągu. Ta właściwość służy do określania, czy można wybrać jedną wartość za pomocą selektora tożsamości, czy wielu tożsamości. Wartości SingleResult i MultipleResult są dozwolone. Domyślnie jest ustawiona wartość SingleResult.
ObjectTypes: jest to opcjonalna właściwość typu ciągu. Możesz zdefiniować listę typów zasobów, względem których użytkownik końcowy może rozpoznać wpisy w polu Rozpoznawanie selektora tożsamości. Lista składa się z listy nazw typów zasobów rozdzielonych przecinkiem ",".
AttributesToSearch: jest to opcjonalna właściwość typu ciągu. Można zdefiniować listę atrybutów, które mają być używane do rozpoznawania elementu w selektorze tożsamości, gdzie lista jest listą atrybutów schematu rozdzielonych przecinkiem ",". Jeśli na przykład właściwość AttributesToSearch ma ustawioną wartość
DisplayName, Alias, użytkownik może wyszukać elementy za pomocąDisplayName = \<search value\>lubAlias=\<search value\>. Wprowadzone tutaj nazwy atrybutów powinny być prawidłowymi atrybutami dla docelowych typów zasobów źródła danych określonego we właściwości Value. Typy zasobów docelowych można znaleźć w polu ObjectTypes. Wszystkie atrybuty muszą być prawidłowe dla wszystkich typów zasobów, które są cytowane w polu ObjectTypes.ColumnsToDisplay: jest to opcjonalna właściwość typu ciągu. Użytkownik udostępnia listę nazw atrybutów schematu rozdzielonych przecinkiem ",". Atrybuty zdefiniowane w tym miejscu składają się na kolumnę widoku listy w selektorze tożsamości.
Wiersze: jest to opcjonalna właściwość całkowita. Działa tylko wtedy, gdy tryb jest ustawiony na MultipleResult. Użyj tej właściwości, aby ustawić wysokość pola tekstowego Rozwiąż na określony rozmiar w jednostkach znaków.
MainSearchScreenText: jest to opcjonalna właściwość typu ciągu. Jest to dostosowany tekst wyświetlany podczas wyszukiwania w oknie Przeglądaj.
zdarzenia:
- SelectedObjectChanged: to zdarzenie jest emitowane, gdy użytkownik zmieni wybrane zasoby.
Przykład:
Uwaga
Aby ten przykład działał, należy utworzyć nowe powiązanie między atrybutem Menedżera i dowolnym niestandardowym typem zasobu, którego dotyczy ten kod XML.
Poniższy segment kodu generuje selektor tożsamości w trybie SingleResult przy użyciu właściwości Filter i ResultObjectType w ramach 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.-->
Na poniższej ilustracji przedstawiono selektor tożsamości w trybie MultipleResult:
Uwaga
Aby wykonać tę przykładową pracę kodu, należy powiązać atrybut ExplicitMember (atrybut odwołania wielowartościowego) z niestandardowym typem zasobu. Utwórz zakresy wyszukiwania z właściwością UsageKeyword ustawioną na Person i Group.
Poniższy segment kodu tworzy selektor tożsamości w trybie 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
nazwa: UocLabel
Opis: jest to prosta kontrolka etykiety tekstowej tylko do odczytu. Zalecamy, aby ta kontrolka była używana do wyświetlania danych tylko do odczytu.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
tekst: jest to atrybut typu ciągu. Tę właściwość definiuje się przez podanie jawnej wartości ciągu lub powiązanie jej ze źródłem danych. Przykładowe powiązanie, które przypisuje wartość tej właściwości, to {Binding Source=object, Path=<prawidłową nazwę atrybutu>.
Aby zapoznać się z przykładem kontrolki UocLabel, zobacz prostą kontrolkę w sekcji Proste przykłady kontrolek.
UocListView
nazwa: UocListView
Opis: jest to zaawansowana kontrolka widoku listy. Składa się z prostego widoku listy, opcjonalnego prostego wyszukiwania, opcjonalnej kontrolki wyszukiwania zaawansowanego, opcjonalnego pola podglądu zaznaczenia i paska przycisku akcji. Opcjonalne proste wyszukiwanie składa się z zakresu wyszukiwania i prostego pola tekstowego wyszukiwania. Zaawansowana kontrolka wyszukiwania jest konstruktorem filtrów. Widok listy zawiera wstępnie utworzoną listę zasobów. Może również wyświetlać wyniki wyszukiwania pochodzące z kontrolek wyszukiwania w tej kontrolce. Pasek przycisk akcji definiuje akcję, jaką można podjąć na podstawie zaznaczenia w widoku listy. W polu Podgląd zaznaczenia są wyświetlane elementy wybrane z widoku listy.
Ważne
Element UocListView nie działa z atrybutami odwołania o pojedynczej wartości. Można go używać tylko z atrybutami referencyjnymi wielowartościowymi. Aby uzyskać informacje o atrybutach referencyjnych o pojedynczej wartości, zobacz UocIdentityPicker w tym dokumencie.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
SelectedValue: jest to opcjonalna właściwość typu ciągu powiązana z wielowartościowym atrybutem odwołania akceptującym listę ciągów sformatowanych za pomocą identyfikatora GUID.
PageSize: jest to opcjonalna właściwość całkowita. Użytkownik może określić, ile wpisów mieści się na jednej stronie w kontrolce widoku listy. Wartość domyślna to 10 wpisów. Każda dodatnia liczba całkowita jest prawidłowa.
UsageKeyword: jest to opcjonalna właściwość typu ciągu. Użytkownik może określić listę słów kluczowych, które definiują zakres wyszukiwania używany w kontrolce wyszukiwania widoku listy. Na serwerze FIM 2010 istnieją zasoby zakresu wyszukiwania. Atrybut w strukturze SearchScopeConfiguration o nazwie UsageKeyword służy do grupowania zestawu zakresów wyszukiwania. Widok listy używa tej listy słów kluczowych. Każde słowo kluczowe jest oddzielone przecinkiem (,). Jest to słowo kluczowe użycia używane w odpowiednim zakresie wyszukiwania, które chcesz wyświetlić w tym widoku listy. Ma to zastosowanie tylko wtedy, gdy właściwość ShowSearchControl jest ustawiona na wartość true.
SearchControlAutoPostback: jest to opcjonalna właściwość logiczna. Ustaw wartość tej właściwości na true, aby wykonać autopostback po wyzwoleniu wyszukiwania. Domyślnie parametr SearchControlAutoPostback ma wartość false.
EmptyResultText: jest to opcjonalna właściwość typu ciągu. Domyślnie jest ustawiona wartość Brak elementów, ale można ją ustawić na dowolną wartość ciągu. Ten tekst jest wyświetlany, gdy wynik wyszukiwania jest pusty.
ButtonHeight: jest to opcjonalna właściwość typu liczba całkowita. Ustaw wartość tej właściwości na dowolną dodatnią wartość całkowitą. Ta właściwość definiuje wysokość przycisków na pasku akcji w pikselach. Wartość domyślna to 32 piksele.
ButtonWidth: jest to opcjonalna właściwość typu liczba całkowita. Ustaw wartość tej właściwości na dowolną dodatnią wartość całkowitą. Ta właściwość definiuje szerokość przycisków na pasku akcji w pikselach. Wartość domyślna to 32 piksele.
CaptionImageMaxHeight: jest to opcjonalna właściwość typu liczba całkowita. Ustaw wartość tej właściwości na dowolną dodatnią liczbę całkowitą. Ta właściwość definiuje maksymalną wysokość ikony opcjonalnego podpisu. Wartość domyślna to 32 piksele.
CaptionImageMaxWidth: jest to opcjonalna właściwość typu liczba całkowita. Ustaw wartość tej właściwości na dowolną dodatnią liczbę całkowitą. Ta właściwość definiuje maksymalną szerokość ikony opcjonalnego podpisu. Wartość domyślna to 32 piksele.
CaptionImageUrl: jest to opcjonalna właściwość typu ciągu. Ta właściwość definiuje adres URL, który łączy się z obrazem wyświetlanym jako obraz podpisu.
PreviewTitle: jest to opcjonalna właściwość typu ciągu. Ta właściwość służy do definiowania tekstu wyświetlanego w górnej części pola podglądu zaznaczenia.
EnableSelection: jest to opcjonalna właściwość typu logicznego. Ta właściwość służy do definiowania, czy widok listy jest w trybie wyboru. Jeśli widok listy jest w trybie wyboru, w lewej kolumnie widoku listy zostanie wyświetlona kolumna pól wyboru, a w dolnej części widoku listy pojawi się pole podglądu zaznaczenia. Wartość domyślna tej właściwości jest ustawiona na true.
singleSelection: jest to opcjonalna właściwość typu logicznego. Jeśli tryb wyboru jest włączony dla widoku listy, ustawienie tej wartości na wartość true ogranicza użytkownikowi końcowemu wybranie tylko jednego elementu z listy. Domyślnie wartość tej właściwości jest ustawiona na wartość false. Oznacza to, że domyślnie użytkownik końcowy może wybrać wiele elementów z listy.
redirectUrl: jest to opcjonalna właściwość typu ciągu. Użyj tej właściwości, aby określić stronę do przekierowania po kliknięciu hiperlinkowanego elementu na liście. Ten adres URL może zawierać symbole zastępcze, które są zastępowane rzeczywistą wartością w czasie wykonywania. Symbole zastępcze są następujące:
- {0} objectType
- identyfikator obiektu {1}
- {2} displayName
ShowTitleBar: jest to opcjonalna właściwość typu logicznego. Użyj tej właściwości, aby określić, czy pasek tytułu powinien być widoczny. Wartość domyślna tej właściwości to false.
ShowActionBar: jest to opcjonalna właściwość typu logicznego. Użyj tej właściwości, aby określić, czy obszar paska akcji powinien być widoczny. Wartość domyślna tej właściwości to true.
ShowPreview: jest to opcjonalna właściwość typu logicznego. Użyj tej właściwości, aby określić, czy obszar podglądu powinien być widoczny. Wartość domyślna tej właściwości to true.
ShowSearchControl: jest to opcjonalna właściwość typu logicznego. Użyj tej właściwości, aby określić, czy kontrolka wyszukiwania powinna być widoczna. Wartość domyślna tej właściwości to true.
ResultObjectType: jest to opcjonalna właściwość typu ciągu. Użyj tej właściwości, aby określić oczekiwany typ obiektu wyników wyszukiwania. Wartość domyślna tej właściwości to Resource. Jeśli wynik wyszukiwania zawiera wiele typów zasobów, ta wartość powinna być określona jako Zasób.
ColumnsToDisplay: jest to właściwość opcjonalna. Użyj tej właściwości, aby określić atrybuty, które mają być wyświetlane w widoku listy jako kolumny. Wartość domyślna tej właściwości to DisplayName, ResourceType. Każda kolumna jest reprezentowana przez nazwę systemową atrybutu. Każda kolumna jest oddzielona przecinkiem ",". Nie trzeba określać wartości dla tej właściwości, gdy widok listy jest używany w trybie wyboru. W trybie wyboru ustawienie kolumny pochodzi z atrybutu SearchScopeColumn zakresu wyszukiwania, który jest aktualnie wybrany.
ListFilter: jest to opcjonalna właściwość typu ciągu. Jest to ścieżka xpath używana do renderowania widoku listy i jest stosowana tylko wtedy, gdy właściwość ShowSearchControl jest ustawiona na false. Po określeniu tej wartości widok listy używa tej wartości właściwości dla zapytań, a widok listy nie jest w trybie wyboru. Filtr może być powiązany z atrybutem ciągu zasobu:
<my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}"/>lub być ciągiem zawierającym wstępnie zdefiniowaną zmienną środowiskową:
<my:Property my:Name="ListFilter" my:Value="/Approval[Request=''%ObjectID%'']"/>TargetAttribute: jest to przestarzała właściwość. Jego wartością powinna być nazwa systemowa atrybutu, do których odwołuje się wiele wartości. Zalecamy, aby ta właściwość nie była już używana. Na przykład w zarządzaniu grupami zamiast używać:
<my:Property my:Name="TargetAttribute" my:Value="ExplicitMember"/>Używać:
<my:Property my:Name=”ListFilter” my:Value=”/Group[ObjectID=’%ObjectID%’]/ExplicitMember”/>ItemClickBehavior: jest to opcjonalna właściwość typu ciągu. Użyj tej właściwości, aby określić, czy chcesz, aby element widoku listy kliknięć wyzwolił powrót serwera, czy wyświetlić widok szczegółów elementu. Obsługiwane są dwie wartości opcji: ModelessDialog i Server. Wartość domyślna to ModelessDialog.
SearchOnLoad: jest to opcjonalna właściwość typu logicznego określająca, czy kontrolka widoku listy powinna wykonywać zapytania dotyczące obciążenia. Ta właściwość ma zastosowanie tylko wtedy, gdy widok listy jest w trybie wyboru. Wartość domyślna tej właściwości to true. Można go wyłączyć, jeśli oczekujesz, że użytkownik zwykle wpisze tekst w wyszukiwaniu, aby uzyskać znaczący wynik. W tym przypadku widok listy początkowo wyświetla komunikat informujący użytkownika o sposobie wykonywania wyszukiwania. Tekst można dostosować za pomocą następujących właściwości:
MainSearchScreenText: ta opcjonalna właściwość typu ciągu ma zastosowanie tylko wtedy, gdy właściwość SearchOnload ma wartość true. Ta właściwość może służyć do dostosowywania tekstu wyświetlanego w środku widoku listy, gdy widok listy nie będzie wyszukiwany automatycznie. Wartość domyślna dla tej właściwości to Znajdowanie zasobów przy użyciu wyszukiwania, zgodnie z wcześniejszym opisem. Możesz określić wartość, aby tekst był bardziej odpowiedni dla danego scenariusza.
SubSearchScreenText: ta opcjonalna właściwość typu ciągu służy do dostosowywania tekstu wyświetlanego po właściwości MainSearchScreenText. Zazwyczaj nie trzeba określać wartości dla tej właściwości, chyba że chcesz dodać dodatkową instrukcję dotyczącą korzystania z widoku listy.
zdarzenia:
- Nie ma żadnych zdarzeń dla tej kontrolki.
Przykład:
Aby zapoznać się z przykładami używania widoku listy wraz z kontrolką UocFilterBuilder jako listą w wersji zapoznawczej, zobacz przykłady UocFilterBuilder we wcześniejszej części tego dokumentu. Widok UocListView można również używać bez konstruktora filtru.
UocNumericBox
nazwa: UocNumericBox
Opis: jest to proste pole tekstowe, które przyjmuje tylko wartości całkowite. Ta kontrolka obsługuje zarówno tryb tylko do odczytu, jak i tryb aktualizowalny.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
MaxValue: jest to opcjonalna właściwość typu liczba całkowita. Ta właściwość służy do definiowania weryfikacji po stronie klienta dla kontrolki. Wartość wprowadzana przez użytkownika końcowego nie może przekroczyć tej wartości. Możesz wprowadzić jawną liczbę całkowitą lub powiązać je z danymi całkowitymi ze źródła danych przy użyciu polecenia {Binding Source=schema, Path=IntegerMaximum}.
MinValue: jest to opcjonalna właściwość typu liczba całkowita. Ta właściwość służy do definiowania weryfikacji po stronie klienta dla kontrolki. Wartość wprowadzana przez użytkownika końcowego nie może być niższa niż ta wartość. Możesz wprowadzić jawną liczbę całkowitą lub powiązać je z danymi całkowitymi ze źródła danych przy użyciu polecenia {Binding Source=schema, Path=IntegerMinimum}.
DefaultValue: jest to opcjonalna właściwość typu liczba całkowita. Użyj tej właściwości, aby zdefiniować wartość domyślną kontrolki, jeśli kontrolka jest używana do tworzenia nowych danych. Tę wartość można jawnie ustawić tylko na statyczną liczbę całkowitą.
wartość: jest to opcjonalna właściwość typu liczba całkowita. Po powiązaniu tego z danymi typu całkowitego ze źródła danych wartość tego atrybutu jest wyświetlana po załadowaniu strony, a następnie jest zapisywana w źródle danych po przesłaniu.
zdarzenia:
- TextChanged: to zdarzenie jest emitowane, gdy bieżąca wartość wewnątrz kontrolki ulegnie zmianie.
Przykład:
Uwaga
Poniższy przykładowy kod generuje pierwsze pole liczbowe. Pole liczbowe nie jest połączone ze źródłem danych ani żadnymi informacjami o schemacie.
<!--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.-->
Poniższy przykładowy kod generuje drugie pole liczbowe.
Uwaga
Aby ten przykład działał, należy najpierw utworzyć nowy atrybut typu całkowitego o nazwie AnIntegerAttribute i powiązać go z niestandardowym typem zasobu.
<!--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
nazwa: UocPictureBox
Opis: ta kontrolka służy do renderowania obrazu, danych typu binarnego. Zalecamy używanie tej kontrolki z danymi typu binarnego. Obraz może być renderowany za pomocą podanego adresu URL obrazu, danych typu binarnego lub źródła atrybutu zawierającego dane typu obrazu.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
imageUrl: jest to opcjonalna właściwość typu ciągu. Wprowadź adres URL obrazu docelowego.
MaxHeight: jest to opcjonalna właściwość typu ciągu. Definiuje maksymalną wysokość obrazu do renderowania w pikselach.
maxWidth: jest to opcjonalna właściwość typu ciągu. Definiuje maksymalną szerokość obrazu do renderowania w pikselach.
ImageData: jest to właściwość typu binarnego. Użyj tej właściwości, aby powiązać źródło danych z wyświetlonym obrazem. Powiązane źródło danych musi być binarne. To pole umożliwia również jawne ustawienie obrazu przez podanie danych w formacie bajtowym[].
ImageResource: jest to opcjonalna właściwość typu binarnego.
AlternativeText: jest to opcjonalna właściwość typu ciągu. Ta właściwość jest wyświetlana jako tekst alternatywny, gdy nie można wyświetlić obrazu.
zdarzenia:
- Nie ma żadnych zdarzeń dla tej kontrolki.
Przykład:
Uwaga
Aby użyć tego przykładu, musisz mieć istniejące dane obrazu powiązane z kontrolką.
Poniższy segment kodu generuje kontrolkę pola obrazu, która wiąże źródło danych z kontrolką:
<!--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-->
Poniższy segment kodu generuje kontrolkę pola obrazu, która wiąże obraz adresu URL z kontrolką :
<!--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
Nazwa: UocRadioButtonList
Opis: jest to prosta lista przycisków opcji. Wybory wzajemnie się wykluczają na tej liście. Ta kontrolka jest zalecana, gdy użytkownicy mają co najmniej pięć opcji do wyboru. W przeciwnym razie zalecany jest element UOCListView.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
ValuePath: ścieżka wartości jest ustawiona na Wartość. Wiąże się on z polem Value z elementu Option, zgodnie z opisem w tej sekcji.
CaptionPath: ścieżka wartości jest ustawiona na Wartość Caption. Wiąże się on z polem Caption z elementu Option, zgodnie z opisem w tej sekcji.
HintPath: ścieżka wartości jest ustawiona na Wartość Wskazówka. Wiąże się on z polem Wskazówka z elementu Option, zgodnie z opisem w tej sekcji.
SelectedValue: wybrana wartość. Jest to wymagana właściwość typu ciągu. Ta właściwość wiąże się z danymi ciągu ze źródła danych.
zdarzenia:
SelectedIndexChanged: zdarzenie występuje po zmianie wybranego przycisku radiowego.
CheckedChanged: gdy przycisk radiowy zmieni jego stan, to zdarzenie jest emitowane.
Opcje:
Dla tej kontrolki mogą istnieć tylko dwie opcje. Aby uzyskać strukturę elementu opcje, zobacz Options, element.
wartość: pole Wartość w jednym elemecie Opcja musi być ustawione na wartość Prawda lub Fałsz.
Caption: może to być dowolna wartość ciągu.
Wskazówka: może to być dowolna wartość ciągu.
Przykład:
Uwaga
Aby ten przykład działał, należy utworzyć nowy atrybut logiczny ABooleanAttribute i powiązać go z niestandardowym typem zasobu.
Poniższy segment kodu tworzy listę przycisków opcji:
<!--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
Nazwa: UocSimpleRadioButton
Opis: jest to prosta kontrolka przycisku opcji. Użycie tej kontrolki jest podobne do prostego pola wyboru. Istnieją dwa przyciski opcji, które są wyświetlane obok etykiety tekstowej. Zalecane jest powiązanie kontrolki z danymi typu logicznego.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
trueText: jest to opcjonalna właściwość typu ciągu. Jest to tekst wyświetlany po wybraniu przycisku opcji.
falseText: jest to opcjonalna właściwość typu ciągu. Jest to tekst wyświetlany, gdy przycisk opcji nie jest zaznaczony.
SelectedItem: jest to opcjonalna właściwość typu logicznego. Ta wartość wskazuje, że wybrano przycisk opcji. Może to wiązać się z danymi typu logicznego ze źródła danych. Wartość domyślna jest ustawiona na false.
zdarzenia:
- CheckedChanged: gdy przycisk opcji zmienia stan z wybranego na niezaznaczone lub odwrotnie, ten sygnał jest emitowany.
Przykład:
Uwaga
Aby wykonać przykładową pracę, należy utworzyć nowy atrybut logiczny ABooleanAttribute i powiązać go z niestandardowym typem zasobu. Dane RCDC są stosowane do tego samego niestandardowego typu zasobu.
Poniższy segment kodu generuje przycisk opcji:
<!--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
nazwa: UocTextBox
Opis: jest to proste pole tekstowe obsługujące dane wejściowe typu ciągu. Zalecamy użycie tej kontrolki do powiązania z danymi typu ciąg.
Właściwości:
Wszystkie typowe właściwości: aby uzyskać informacje o tych właściwościach, zobacz Common properties.
maxLength: jest to opcjonalny atrybut typu całkowitolicztnego. Ta właściwość określa maksymalną długość danych wejściowych ciągu. Wartość domyślna dla tej właściwości to 128 znaków.
tekst: jest to opcjonalna właściwość typu ciągu. Jest to tekst wyświetlany w polu tekstowym. Można zdefiniować jawny ciąg wyświetlany w polu tekstowym podczas początkowego ładowania kontrolki lub powiązać go z atrybutem schematu typu ciągu.
Wiersze: jest to opcjonalna właściwość typu liczba całkowita. Ta właściwość definiuje wysokość pola tekstowego w jednostkach znaków. Wartość domyślna to jeden znak.
Kolumny: jest to opcjonalna właściwość typu liczba całkowita. Ta właściwość definiuje szerokość pola tekstowego w jednostkach znaków. Wartość domyślna to 20 znaków.
Zawijanie: jest to opcjonalna właściwość typu logicznego. Ustawiając wartość tej właściwości na true, użytkownik włącza funkcję Zawijanie programu Word w polu tekstowym. Wartość domyślna tej właściwości jest ustawiona na true.
UniquenessValidationXPath: jest to opcjonalna właściwość typu ciągu. Przyjmuje prawidłowe wyrażenie filtru FIM XPath i zapewnia, że wartość wejściowa przez użytkownika jest unikatowa w zasobach, które znajdują się w zakresie filtru. Aby na przykład upewnić się, że użytkownik zażądał nazwy wyświetlanej jest unikatowy we wszystkich grupach zabezpieczeń z włączoną obsługą poczty w bazie danych usługi FIM, należy użyć
/Group[DisplayName=’%VALUE%’ and Type=’MailEnabledSecurity’XPath. Akcja walidacji jest wykonywana po opuszczeniu strony przez użytkownika. Ta właściwość jest obsługiwana tylko w centrum danych RCDC na potrzeby tworzenia zasobu.UniquenessErrorMessage: jest to opcjonalna właściwość typu ciągu. Ten ciąg jest używany do wyświetlania komunikatu o błędzie, jeśli weryfikacja uniquenessValidationXPath nie powiedzie się i może być jawny tekst lub zmienna zasobu ciągu. Jeśli ta właściwość nie zostanie określona, domyślny komunikat o błędzie dla nieudanej weryfikacji to "%VALUE% już istnieje. Spróbuj użyć innego".
zdarzenia:
- textChanged: to zdarzenie jest emitowane po zmianie tekstu wewnątrz pola tekstowego.
Przykład:
Zobacz sekcję Proste przykłady kontrolek, aby zapoznać się z pełną próbką tej kontrolki.
Dodatek A: Domyślny schemat XSD
W tej sekcji przedstawiono kompletny schemat XSD dla wszystkich domyślnych kontrolerów RCDCs dostarczanych z programem 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>
Dodatek B: Domyślne podsumowanie XSL
W tej sekcji przedstawiono pełne podsumowanie XSL dostarczone z programem 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>