...
DataNodes: In der "CustomContentSection" werden die Felder, sogenannte DataNode-Elemente, definiert.
View: Im Bereich der "View" wird das Aussehen des Dokument-Parameters festgelegt.
DataSources: In "DataSources" können Datenbankabfragen definiert und die Werte aus der Abfrage übernommen werden.
...
Grundaufbau
Grundaufbau
Code Block | ||||
---|---|---|---|---|
| ||||
<Configuration> <CustomContentSection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> <DataNodes> <!-- DataNode-Elemente werden hier definiert --> </DataNodes> </CustomContentSection> <Views> <View> <!-- Hier wird das Aussehen des Dialoges definiert --> </View> </Views> </Configuration> |
...
HINWEIS
Falls ein Grundaufbau angetroffen wird, bei dem das Views
-Element fehlt: siehe Veraltete Konfiguration.
...
CustomContentSection
Zuoberst bei den "DataNodes" werden die Elemente definiert, auf die in der "View" im unteren Teil zugegriffen wird. In der View wird das Aussehen des Dokument-Parameters festgelegt. Im DataSources-Part können Datenbank-Abfragen definiert werden, und die Werte aus der Abfrage auf die unter "DataNodes" definierten Elemente geschrieben werden.
...
Code Block |
---|
<CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> |
Attribute der CustomContentSection:
Attributname | Beschreibung |
---|---|
Name (Fenstername) | Hier wird der Name des Dokument-Parameter-Dialog-Fensters definiert werden. |
WindowWidth (Fensterbreite) | Hier kann die Fensterbreite in Pixel definiert werden. 1200 Pixel sollten nicht überschritten werden, da unter dieser Auflösung die einwandfreie Darstellung von primedocs möglich sein sollte. |
WindowHeight (Fensterhöhe) | Hier kann die Fensterhöhe in Pixel definiert werden. 1200 Pixel sollten nicht überschritten werden, da unter dieser Auflösung die einwandfreie Darstellung von primedocs möglich sein sollte. Der Wert für |
...
Dank dieser Auslagerung in die Globalen Konfigurationen wird gewährleistet, dass die genannten Informationen nur an einem Ort geändert werden müssen. Folglich werden Änderungen praktischerweise in allen Vorlagen angewendet, die diese Verknüpfung besitzen. Wenn in der Vorlage ein anderer Wert festgelegt werden muss, als derjenige in den Globale Konfigurationen, wird lediglich ein anderer Wert in die Anführungszeichen reingeschrieben.
...
DataNodes
In diesem Abschnitt geht es um die Konfiguration zwischen <DataNodes>
und </DataNodes>
. Jedes DataNode definiert ein Dokument-Parameter-Feld, auf das im Editor, in Skripten oder über Extended Bindings zugegriffen werden kann. Für jedes Feld, das in den Views existiert, muss für die Weiterverwendung ein DataNode angelegt werden.
...
HINWEIS
Wenn eine Id in den DataNodes doppelt vorhanden ist (NICHT in der View!), dann kann der Dokument-Parameter-Dialog nicht geöffnet werden.
Basis-Attribute
Folgende Attribute können in jede Art von DataNode eingesetzt werden:
Attributname | Beschreibung |
---|---|
Id | Ist in jedem Element zwingend. Sie wird benötigt, um das Feld zu identifizieren, es ins Dokument einzufügen und für die Verwendung in Skripten oder Extended Bindings. Die Id darf keine Leerzeichen enthalten und muss eindeutig sein. |
Label | Beschriftung des Elements in der primedocs-Funktion Quick Check-Panel in Word. Das |
Tooltip | Hinweis, der angezeigt, wenn der Benutzer mit der Maus darüber fährt, z. B. |
Tracked | Der Quick Check wird mit dem |
...
Text
Wird in Word als Nur-Text-Inhaltssteuerelement (Plain Text Content Control) eingefügt. In der View kann mit dem Text-Element auf eine Textbox, einen RadioButton, eine ComboBox oder eine CheckBox verwiesen werden. Je nach dem, welches der unteren Elemente eingesetzt wird, erscheint in Word im Textfeld etwas anderes:
...
Wird zwischen Start- und Endtag etwas reingeschrieben, steht der eingegebene Text beim Generieren des Dokumentes bereits im Textfeld. Im erweiterten Beispiel z. B. Einladung
.
Attribute für Text-Elemente:
Attributname | Beschreibung |
---|---|
Regex | Das Attribut erlaubt, einen Regex (.NET Syntax) zu definieren, der im eingegeben Text mindestens eine Übereinstimmung (Match) finden muss. Achtung: Falls der ganze Text übereinstimmen oder nur genau ein 'Match' vorhanden sein darf, muss dies vom Regex-Ausdruck definiert werden. Beispiele: Regex="^[0-9]+$" erzwingt, dass alle Zeichen des Eingabetexts Ziffern sein müssen und dass mindestens eine Ziffer vorhanden sein muss. (^ matcht den Anfang des Eingabetextes und $ das Ende) |
Required | Es definiert, ob das Feld leer gelassen werden darf (Required="false" oder nicht gesetzt) oder ob das Feld ausgefüllt werden muss (Required="true"). Solange das Textfeld nicht ausgefüllt wird, bleibt der OK-Button zum Bestätigen der Eingaben im Dokument-Parameter grau gefärbt und ist nicht anklickbar. Sobald die nötigen Zeichen im Textfeld abgefüllt sind, kann der OK-Button angeklickt werden. |
ValidationMessage | Falls Required="true" oder ein Validierungsregex gesetzt wurde, erlaubt ValidationMessage eine benutzerdefinierte Fehlermeldung, falls die Validierung fehlschlägt. Sie wird angezeigt, sobald der Mauszeiger über das rote Ausrufezeichen rechts im Textfeld schwebt. Falls ValidationMessage nicht gesetzt ist, wird im Fall einer Nichtübereinstimmung eine Standardmeldung angezeigt. |
...
DateTime
Wird in Word zu einem Datumsauswahl-Inhaltssteuerelement (Date Picker Content Control) mit Kalenderauswahl und wird auch im Dokument-Parameter so angezeigt.
...
Wird zwischen Start- und Endtag das Datum gesetzt, ist dieses beim Öffnen vorausgewählt, wie z. B. 2022-08-15
für den Donnerstag, 15. August 2022. Wenn der Inhalt leer ist, wird jeweils das aktuelle Datum vorausgewählt.
Attribute für DateTime-Elemente:
Attributname | Beschreibung |
---|---|
Calendar | Es setzt das Format des Kalenders. Default ist "Gregor". Dieses Attribut muss nicht zwingend gesetzt werden. |
Format | Definition des Datumformates z. B. "dd MM yyyy" für "02.06.2016", Liste mit Datumsformaten. In der Basis-Konfiguration der Globalen Übersetzungen sind mehrere Datumsformate hinterlegt, auf die zugegriffen werden kann. |
Offset | Hier kann mit Tagen das vorausgewählte Datum berechnet werden, ausgehend vom jeweils aktuellen Datum, z. B. mit |
...
CheckBox
Wird in Word als Kontrollkästchensteuerelement (Check Box Content Control) eingefügt und ist für eine ja/nein-Auswahl.
...
Wenn zwischen Start- und Endtag true
gesetzt wird, ist die CheckBox beim Generieren bereits angekreuzt.
Attribute für CheckBox-Elemente:
Attributname | Beschreibung |
---|---|
Required | Es definiert, ob das Feld leer gelassen werden darf (Required="false" oder nicht gesetzt) oder ob das Feld ausgefüllt werden muss (Required="true"). Solange das Textfeld nicht ausgefüllt wird, bleibt der OK-Button zum Bestätigen der Eingaben im Dokument-Parameter grau gefärbt und ist nicht anklickbar. Sobald die nötigen Zeichen im Textfeld abgefüllt sind, kann der OK-Button angeklickt werden. |
...
ComboBox
Wird in Word als Kombinationsfeld-Inhaltssteuerelement (Combo Box Content Control), auch genannt Dropdown, eingefügt. Es ist für die Auswahl zwischen vorgegebenen Werten (es sind beliebige Eingaben in Word zulässig).
...
DisplayText
Anzeigetext in Dokument-Parameter-Dialog und Kombinationsfeld-Inhaltssteuerelementen in Word.
Gilt generell als Inhalt dieses primedocs-Felds, so z. B. bei einem Zugriff in Skripten mit
<Element id="DocParam.ReasonForCongratulation " />
.Wird in Skripten für Conditions verwendet, wenn vor der Id kein
$
-Zeichen steht.
Beim obigen Beispiel ist<Condition when="DocParam.ReasonForCongratulation = 'Mitarbeiterjubiläum'>
also wahr.
Value
Darf nicht leer sein – es muss mindestens ein Zeichen enthalten sein. Es sollte keine Leerzeichen oder Sonderzeichen enthalten sein, da Word diese nicht akzeptiert.
Wird in Skripten für Conditions verwendet, wenn vor der Id ein
$
-Zeichen steht.
Beim oberen Beispiel ist<Condition when="$DocParam.ReasonForCongratulation = 'employeeAnniversary'>
also wahr.
Attribute für ComboBox-Elemente:
Attributname | Beschreibung |
---|---|
IsEditable | Wenn es auf |
IsSearchEnabled | Wenn es auf |
SelectedValue | Bestimmt, welcher Eintrag im Kombinationsfeld vorausgewählt ist. Dabei muss vom |
...
Collection
Der Collection-DataNode ist eine Funktionserweiterung der ComboBox. Wie der Name schon sagt, ist eine Collection eine Sammlung an Werten. Der Unterschied der Wertesammlung in einer Collection und in einer ComboBox unterscheiden sich darin, dass die Collection komplexe Datenstrukturen speichern kann, während die ComboBox nur eine einfache Key → Value Zuordnung zulässt. Beispiel:
...
HINWEIS
Es gibt zwei Arten von DataNodes: DataNodes und ViewDataNodes. Die DataNodes werden innerhalb der CustomContentSection definiert, die ViewDataNodes direkt nach dem Views
-Element. Im XML heissen beide gleich; DataNodes.
Der massgebende Unterschied zwischen den DataNodes und den ViewDataNodes ist, dass die ViewDataNodes nur im Dokument-Parameter existieren. Beim Generieren des Dokumentes werden diese dann entfernt. Wird der Dokument-Parameter aus dem Dokument nochmals geöffnet, so werden die Daten erneut aus der Konfiguration der Vorlage geladen, nicht aus dem Word-Dokument selbst. Die DataNodes werden hingegen mit ins Dokument übernommen. Die ViewDataNodes sind besonders geeignet, wenn mit grossen Collections gearbeitet wird. Die nicht ausgewählten Einträge werden nicht ins Dokument übernommen. So werden viel weniger Daten mitgenommen.
...
Views
Innerhalb vom Views
-Start- und Endtag befinden sich einzelne View
-Strukturen. Eine View ist eine Ansicht, welche Texte, Bilder, Eingabemöglichkeiten (Textboxen, Checkboxen, Komboboxen, ...) und Buttons enthält.
...
Spezial-Id: main
: Diese View ist die Startansicht. Es muss in jedem Fall eine View mit der Id main
konfiguriert werden.
...
Navigationsschalter ausserhalb von Rows
Code Block |
---|
<Button TargetView="SecondView" Label="Weiter" IsDefault="true" /> <Button Type="Submit" Label="OK" /> <Button Type="Cancel" Label="Abbrechen" /> |
...
Label
: Beschriftung des ButtonsTargetView
: Id der Ziel-View bei WeiterleitungsbuttonsType
: Spezial-AktionenWert
Submit
: Dokument-Parameter-Dialog verlassen, weiter im GenerierungsprozessWert
Cancel
: Dokument-Parameter-Dialog verlassen, Abbruch des Generierungsprozess
IsDefault
: Wenn auftrue
: Bestimmt die Standard-Aktion bei Enter
...
Rows und ihr Inhalt
Neben Buttons beinhalten die Views auch Rows (Zeilen). Die Rows enthalten den eigentlichen Inhalt der View und in diese können Struktur- und Formularelemente eingefügt werden. Die Strukturelemente gelten rein zum Anpassen des Aussehens des Dokument-Parameters. Die Formularelemente sind zum Einfügen in die Vorlage oder zum Einsetzen in Skripten und Extended Bindings.
Attribute der Struktur- und Formularelemente:
Die Views sind standardmässig in 4 Spalten (Columns) unterteilt. Jedes Struktur- und Formularelement hat die Breite 1. Um die Breite zu vergrössern, wird das Attribut ColumnSpan
verwendet. Die Struktur- und Formularelemente werden von links nach rechts eingefügt. Wenn ein Feld um eine Spalte versetzt angezeigt werden soll, wird das mit ColumnOffset="1"
bewerkstelligt.
Folgende Attribute können sowohl bei Strukturelementen als auch bei Formularelementen eingesetzt werden.
Attribute bei Struktur-/Formularelementen:
Attributname | Beschreibung |
---|---|
Bind | Ermöglicht das Anzeigen und Verschwinden lassen von Rows oder Elementen, siehe Kapitel Bindings. |
ColumnOffset | Gibt an, wieviele Spalten vor dem Feld übersprungen werden sollen (also die Anzahl "Einzüge") |
ColumnSpan | Gibt an, wieviele Spalten das Feld beansprucht. Das kann je nach Spaltenanzahl bis zu Anzahl 12 sein. Wird nichts angegeben, ist es der Wert 1. |
IsEnabled | Wenn |
IsVisible | Wenn |
OnChange | Wird als Referenz auf ein Element im Zusammenhang mit JavaScript im Dokument-Parameter verwendet. Siehe dazu das Kapitel JavaScript. |
Tooltip | Angezeigter Text, wenn der Cursor über diesem Feld ist. |
AccessibilityText | Definierter Text für Screen Reader. Wenn dieses Attribut gesetzt wird und der Client mit |
AccessibilityReadContent |
|
Value | Vordefinierter Text. Der Inhalt wird jedoch ignoriert, sobald es schon vordefinierten Text im gleichen Element in der DataNode-Section gibt. |
...
HINWEIS
Barrierefreiheit:
Über die Attribute AccessibilityText
oder AccessibilityReadContent
kann der Dialog für Screen Reader Software zugänglicher gemacht werden. Es sollte darauf geachtet werden, dass es via Tab
möglich ist, sich sinnvoll durch den Dialog zu navigieren und dass die gewählten Texte aussagekräftig sind.
...
Strukturelemente
trukturelement | Beschreibung |
---|---|
TextBlock |
– |
Separator |
|
Label |
– Das Label wird benutzt, um einem Element, z. B. einer CheckBox, eine Bezeichnung zu geben. |
Image |
– |
ImagePicker | Der ImagePicker ermöglicht das Auswählen von Bildern im Datei-Explorer des Benutzers. Das dazugehörige DataNode zum Einfügen in das Dokument ist das Image-Element. |
...
Code Block | ||
---|---|---|
| ||
<Views IsDebug="false"> <View Id="main" Label="{[DocParam.LabelMainView]}"> <Row> <TextBlock Style="h1" ColumnSpan="3">Vorlagenname</TextBlock> <Image Height="50">Base64Encoded-Logo</Image> </Row> <Row> <Separator ColumnSpan="4" /> </Row> |
...
Formularelemente
Wenn es ein DataNode mit der gleichen Id gibt, wird versucht, dieses als Datenquelle zu nutzen. Diese Felder besitzen alle ein Value
-Attribut, das als initialer Wert genutzt wird.
TextBox
→ Ein- oder mehrzeiliges Textfeld, siehe Abschnitt "Text" im Kapitel DataNodes.
...
Der vordefinierte Textfeld-Inhalt darf jeweils nur an einem Ort definiert werden. Sind an beiden Orten sichtbare Zeichen definiert, wird der Value des in den DataNodes definierten Text-Elements eingefügt. Der Value in den Views wird folglich ignoriert.
DatePicker
→ Datumsauswahl mit Kalender, siehe Abschnitt "DateTime" im Kapitel DataNodes.
...
Mögliche Attribute | Beschreibung |
---|---|
Format | siehe "Attribute für DateTime-Elemente" im Kapitel DataNodes |
CheckBox
→ Ein Auswahlkasten – oder eben eine CheckBox, siehe Abschnitt "CheckBox" im Kapitel DataNodes.
...
Mögliche Attribute | Beschreibung |
---|---|
Label | Bezeichnung, die rechts von der CheckBox erscheint. |
ComboBox
→ Eine Auswahlliste oder ein Dropdown, siehe Abschnitt "ComboBox" im Kapitel DataNodes.
...
HINWEIS
Weil die ComboBox mittels Text-Element erstellt wurde, wird in Word ein Textfeld und was im Attribut Value
steht, ausgegeben. Deswegen ist diese ComboBox-Variante nur für den Zugriff via Skript oder Extended Binding geeignet.
RadioButton
RadioButtons werden über ihre Id gruppiert. Alle RadioButtons mit derselben Id stellen eine "Entweder-Oder-Auswahl" dar.
Pro anwählbare Option, muss also ein einzelnes RadioButton-Element definiert werden. Die Id ist dabei die Id des Datanodes, also des Text- oder ComboBox-Elementes. Die zwei Attribute Label
und Value
sind zwingend.
...
Resultat (Spalten wurden markiert):
...
Validierung
Benutzereingaben können, wie erwähnt, validiert werden. Wenn eines oder mehrere Felder dementsprechend markiert werden, kann der Benutzer den Dokument-Parameter-Dialog nicht verlassen, bevor er die Bedingungen erfüllt hat.
...
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="utf-8"?> <Configuration> <CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="450"> <DataNodes> <Text Id="DocParam.TextRequired" Required="true" ValidationMessage="Bitte Feld nicht leer lassen" /> <Text Id="DocParam.TextRegexOnlyDigits" Regex="^[0-9]*$" ValidationMessage="Bitte nur Ziffern eingeben">Abc</Text> <CheckBox Id="DocParam.CheckBoxRequired" Required="true" Tooltip="CheckBox muss zwingend angekreuzt sein" /> <Text Id="DocParam.ComboBoxInViewNotOption1" Tooltip="Bitte nicht Option 1 anwählen">option1</Text> <ComboBox Id="DocParam.ComboBoxInDataNodesNotOption1" SelectedValue="option1" Tooltip="Bitte nicht Option 1 anwählen"> <Item DisplayText="Option 1" Value="option1" /> <Item DisplayText="Option 2" Value="option2" /> <Item DisplayText="Option 3" Value="option3" /> </ComboBox> <Text Id="DocParam.RadioButtonRequired" Required="true" /> </DataNodes> </CustomContentSection> <Views IsDebug="false"> <View Id="main" Label="Startseite"> <Row> <TextBlock Style="h1" ColumnSpan="4">Validierungsbeispiel</TextBlock> </Row> <Row> <Separator ColumnSpan="4"/> </Row> <Row> <Label ColumnSpan="2" Content="Textfeld, darf nicht leer sein" /> <TextBox Id="DocParam.TextRequired" ColumnSpan="2" /> </Row> <Row> <Label ColumnSpan="2" Content="Textfeld, darf nur Ziffern enthalten" /> <TextBox Id="DocParam.TextRegexOnlyDigits" ColumnSpan="2" /> </Row> <Row> <Label ColumnSpan="2" Content="CheckBox, muss angekreuzt sein" /> <CheckBox Id="DocParam.CheckBoxRequired" Label="CheckBox" /> </Row> <Row> <Label ColumnSpan="2" Content="ComboBox, Option 1 darf nicht gewählt sein" /> <ComboBox Id="DocParam.ComboBoxInViewNotOption1" IsInvalidWhenValue="option1"> <Item Label="Option 1" Value="option1" /> <Item Label="Option 2" Value="option2" /> <Item Label="Option 3" Value="option3" /> </ComboBox> </Row> <Row> <Label ColumnSpan="2" Content="ComboBox, Option 1 darf nicht gewählt sein" /> <ComboBox Id="DocParam.ComboBoxInDataNodesNotOption1" IsInvalidWhenValue="option1" /> </Row> <Row> <Label ColumnSpan="2" Content="RadioButtons, es muss eine Option gewählt werden" /> <RadioButton Id="DocParam.RadioButtonRequired" Value="option1" Label="Option 1" /> <RadioButton Id="DocParam.RadioButtonRequired" Value="option2" Label="Option 2" ShowRequiredIndicator="true" ToolTip="Bitte eine Option wählen" /> </Row> <Button Type="Submit" Label="OK" IsDefault="true" /> <Button Type="Cancel" Label="Abbrechen" /> </View> </Views> </Configuration> |
...
Bindings
Simple Bindings
Bindings beziehen sich auf andere Werte und können diese als "Wert-Grundlage" und für Abfragen nutzen. Über Bindings können folgende Attribute gesteuert werden:
...
Code Block | ||
---|---|---|
| ||
<TextBlock ColumnSpan="4" Bind="Value: $('DocParam.Notizen'), IsEnabled: 'false'" /> |
...
Calc": Berechnungen in Bindings
Die Wertgrundlagen für die Bindings können mit mathematischen Funktionen erweitert werden. Das Ansprechen der Felder bleibt dabei gleich ($('DocParam.Xyz')
). Um die Felder mathematisch miteinander zu verknüpfen, können die normalen Basisoperatorn (+
, -
, /
, *
) verwendet werden.
...
Sofern keine Standardwerte in den DataNode-Elementen vorgegeben sind, werden alle Calc-Binding-Werte mit 0
initialisiert. Insbesondere bei "IsEnabled"- und "IsVisible"-Bindings mit "Calc"-Bedingungen sollte man auf valide Standardwerte achten, ansonsten ist die Bedingung initial immer erfüllt.
...
Script – JavaScript
Für Anforderungen, die mit den üblichen Konfigurationen nicht abgedeckt werden können, bietet die Dokument-Parameter-Dokumentfunktion die Möglichkeit, JavaScript zu schreiben.
...
OO.getValue("ANY_ID")
: Gibt den Text-Wert des DataNode-Elements mit der entsprechenden Id zurück. Beispiel:var valueFromExampleDocParam = OO.getValue("DocParam.Example");
OO.setValue("ANY_ID", "ANY_VALUE")
: Setzt den Text-Wert des DataNode-Elements mit der entsprechenden Id. Beispiel:OO.setValue("DocParam.Example", "Neuer Inhalt...");
OO.addValidationMessage("ANY_ID", "ANY_VALIDATION_MESSAGE")
: Setzt einen Validierungsfehler mit einer Nachricht für das DataNode-Element mit der entsprechenden Id. Hinweis: Alle Validierungsnachrichten werden in der Validierungsübersicht angezeigt. Wenn ein Element mit der angegebenen ID gefunden wird, wird ein Fehlerhinweis angezeigt. Beispiel:OO.addValidationMessage("DocParam.Example", "Wenn X und Y gesetzt wurden, muss im Beispielfeld etwas eingegeben werden.");
...
DataSources
Das DataSources-Feature ist auf dieser Seite dokumentiert.
...
Beispiele über alle Themen auf dieser Seite
Einfacher Dokument-Parameter-Dialog:
Konfiguration eines einfachen Dokument-Parameter-Dialoges:
Code Block | ||
---|---|---|
| ||
<Configuration> <CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> <DataNodes> <Text Id="DocParam.Subject" /> <DateTime Id="DocParam.CreationTime" Format="d. MMMM yyyy" /> <CheckBox Id="DocParam.CheckBox1" /> <ComboBox Id="DocParam.ComboBox1" SelectedValue="default"> <Item DisplayText="Option 1" Value="opt1" /> <Item DisplayText="Option 2" Value="opt2" /> <Item DisplayText="Option 3" Value="opt3" /> </ComboBox> <Text Id="DocParam.TextNodeForRadio" /> <ComboBox Id="DocParam.ComboBoxForRadio"> <Item DisplayText="Option 1" Value="opt1" /> <Item DisplayText="Option 2" Value="opt2" /> <Item DisplayText="Option 3" Value="opt3" /> </ComboBox> </DataNodes> </CustomContentSection> <Views IsDebug="false"> <View Id="main" Label="Startseite"> <Row> <TextBlock Style="h1" ColumnSpan="4">Titel</TextBlock> </Row> <Row> <Separator ColumnSpan="4" /> </Row> <Row> <Label Content="Betreff" /> <TextBox Id="DocParam.Subject" ColumnSpan="3" /> </Row> <Row> <Label Content="Datum" /> <DatePicker Id="DocParam.CreationTime" ColumnSpan="3" /> </Row> <Row> <CheckBox Id="DocParam.CheckBox1" Label="CheckBox mit ColumnOffset=1" ColumnOffset="1" ColumnSpan="2" /> </Row> <Row> <Label Content="das ist eine Combobox" ColumnSpan="1" /> <ComboBox Id="DocParam.ComboBox1" ColumnSpan="2" /> </Row> <Row> <Label Content="RadioButton Basierend auf einem TextNode" ColumnSpan="4"></Label> </Row> <Row> <Separator ColumnSpan="4" /> </Row> <Row> <!-- Konfiguration eines RadioButton über ein DataNode-Element vom Typ Text. Wenn das DataNode-Element vom Typ Text im Dokument verwendet wird, dann wird der Value der ausgewählten Option eingefügt. Die anderen Optionen können im Dokument nicht mehr angewählt werden, nur über den Dokument-Parameter-Dialog. --> <RadioButton Id="DocParam.TextNodeForRadio" Value="opt1" Label="Option 1" /> <RadioButton Id="DocParam.TextNodeForRadio" Value="opt2" Label="Option 2" /> <RadioButton Id="DocParam.TextNodeForRadio" Value="opt3" Label="Option 3" /> </Row> <Row> <!-- Fügt eine leere Row ein, kann so verwendet werden, um Elemente optisch besser zu trennen. --> <TextBlock /> </Row> <Row> <Label Content="RadioButton basierend auf einem ComboBoxNode" ColumnSpan="4" /> </Row> <Row> <Separator ColumnSpan="4" /> </Row> <Row> <!-- Konfiguration eines RadioButton über ein DataNode-Element vom Typ ComboBox. Wenn das DataNode-Element vom Typ ComboBox im Dokument verwendet wird, wird das Label der ausgewählten Option angezeigt. Die anderen Optionen können über die ComboBox von Word weiterhin angewählt werden. --> <RadioButton Id="DocParam.ComboBoxForRadio" Value="opt1" Label="Option 1" /> <RadioButton Id="DocParam.ComboBoxForRadio" Value="opt2" Label="Option 2" /> <RadioButton Id="DocParam.ComboBoxForRadio" Value="opt3" Label="Option 3" /> </Row> <Button Type="Submit" Label="OK" IsDefault="true" /> <Button Type="Cancel" Label="Abbrechen" /> </View> </Views> </Configuration> |
Der dazugehörige Dialog:
...
Validierung:
Code Block |
---|
<Configuration> <CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> <DataNodes> <Text Id="DocParam.Subject" Required="true" ValidationMessage="Bitte geben sie einen Betreff ein" /> <Text Id="DocParam.4NumbersMax" Regex="^[0-9]{1,4}$" ValidationMessage="Die Zahl darf maximal aus vier Ziffern bestehen und muss natürlich sein" /> </DataNodes> </CustomContentSection> <Views> <View Id="main" Label="Startseite"> <Row> <TextBlock Style="h1" ColumnSpan="4">Titel</TextBlock> </Row> <Row> <Separator ColumnSpan="4"/> </Row> <Row> <Label Content="Betreff" /> <TextBox Id="DocParam.Subject" ColumnSpan="3" /> </Row> <Row> <Label Content="Maximal Vierstellige, natürlich Zahl" /> <TextBox Id="DocParam.4NumbersMax" ColumnSpan="3" /> </Row> <Button Type="Submit" Label="OK" IsDefault="true" /> <Button Type="Cancel" Label="Abbrechen" /> </View> </Views> </Configuration> |
...
...
Simple Bindings:
Code Block | ||
---|---|---|
| ||
<Configuration> <CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> <DataNodes> <CheckBox Id="DocParam.Checkbox1" /> <Text Id="DocParam.TextNode1" /> </DataNodes> </CustomContentSection> <Views> <View Id="main" Label="Startseite"> <Row> <TextBlock Style="h1" ColumnSpan="4">Titel</TextBlock> </Row> <Row> <Separator ColumnSpan="4"/> </Row> <Row> <Label Content="Name für CustomLabel"></Label> <TextBox Id="DocParam.TextNode1"></TextBox> </Row> <Row> <CheckBox Id="DocParam.Checkbox1" Label="Zeige CustomLabel"></CheckBox> </Row> <Row> <Label Content="CustomLabel: " Bind="IsVisible: $('DocParam.Checkbox1')"></Label> <!-- Einfaches, Doppeltes Binding mit einer Bedingung pro gebindetem Attrbut (isVisible, Value) --> <TextBlock Bind="IsVisible: $('DocParam.Checkbox1'), Value: $('DocParam.TextNode1')"></TextBlock> </Row> <!-- Einfaches Value Binding --> <Row Bind="IsVisible: $('DocParam.TextNode1') == 'Hello'"> <TextBlock>CustomLabel hat den Wert 'hello'</TextBlock> </Row> <!-- IsVisible-Binding mit einer UND Bedingung (&& → && ) --> <Row Bind="IsVisible: $('DocParam.Checkbox1') && $('DocParam.TextNode1') == 'Hello'"> <TextBlock Value="">CustomLabel ist sichtbar UND hat den Wert 'Hello'</TextBlock> </Row> <!-- IsVisible-Binding mit einer ODER Bedingung --> <Row Bind="IsVisible: $('DocParam.Checkbox1') || $('DocParam.TextNode1') == 'hello'"> <TextBlock>CustomLabel ist sichtbar ODER hat den Wert 'hello'</TextBlock> </Row> <Button Type="Submit" Label="OK" IsDefault="true" /> <Button Type="Cancel" Label="Abbrechen" /> </View> </Views> </Configuration> |
...
...
Bindings: Calc
Code Block |
---|
<Configuration> <CustomContentSection Name="Dokument-Parameter" WindowWidth="750" WindowHeight="750"> <DataNodes> <!-- Eingabefelder für die mathematischen Funktionen mit validen Standardwerten --> <Text Id="DocParam.Field1">1</Text> <Text Id="DocParam.Field2">1</Text> <Text Id="DocParam.TestNode2" /> <Text Id="DocParam.OutputAdd" /> <Text Id="DocParam.OutputSubtract" /> <Text Id="DocParam.OutputDivide" /> <Text Id="DocParam.OutputMultiply" /> <Text Id="DocParam.CB1" /> <Text Id="DocParam.CB2" /> <Text Id="DocParam.CB3" /> <Text Id="DocParam.CB4" /> </DataNodes> </CustomContentSection> <Views> <View Id="main" Label="Startseite"> <Row> <TextBlock Style="h1" ColumnSpan="4">Titel</TextBlock> </Row> <Row> <Separator ColumnSpan="4"/> </Row> <Row> <Label Content="Wert 1" /> <TextBox Id="DocParam.Field1" ColumnSpan="3"/> </Row> <Row> <Label Content="Wert 2" /> <TextBox Id="DocParam.Field2" ColumnSpan="3" /> </Row> <Row Bind="IsVisible: Calc('$('DocParam.Field1') + $('DocParam.Field2') > 1000';'F0') "> <TextBlock>Wert1 + Wert2 Ergeben mehr als 1000</TextBlock> </Row> <Row> <Label Content="Ergebnis Addition" /> <!-- Simples CalcBinding mit Addition und Formatierung auf zwei Nachkomastellen im Währungsformat --> <TextBox Id="DocParam.OutputAdd" ColumnSpan="3" Bind="Value: Calc('$('DocParam.Field1') + $('DocParam.Field2')';'C2')" /> </Row> <Row> <Label Content="Ergebnis Subtraktion" /> <!-- Simples CalcBinding mit Subtraktion und Formatierung auf zwei Nachkomastellen im Währungsformat --> <TextBox Id="DocParam.OutputSubtract" ColumnSpan="3" Bind="Value: Calc('$('DocParam.Field1') - $('DocParam.Field2')';'C2')" /> </Row> <Row> <Label Content="Ergebnis Division" /> <!-- Simples CalcBinding mit Divison und Formatierung auf drei Nachkomastellen im Dezimalformat --> <TextBox Id="DocParam.OutputDivide" ColumnSpan="3" Bind="Value: Calc('$('DocParam.Field1') / $('DocParam.Field2')';'F3')" /> </Row> <Row> <Label Content="Ergebnis Multiplikation" /> <!-- Simples CalcBinding mit Multiplikation und Formatierung auf zwei Nachkomastellen im Währungsformat --> <TextBox Id="DocParam.Outputmultiply" ColumnSpan="3" Bind="Value: Calc('$('DocParam.Field1') * $('DocParam.Field2')';'C2')" /> </Row> <Row> <CheckBox Id="DocParam.CB1" Label="CB1"></CheckBox> <CheckBox Id="DocParam.CB2" Label="CB2"></CheckBox> <CheckBox Id="DocParam.CB3" Label="CB3"></CheckBox> <CheckBox Id="DocParam.CB4" Label="CB4"></CheckBox> </Row> <!-- Calc Binding um angewählte Checkboxen zu "zählen" --> <Row Bind="IsVisible: Calc('$('DocParam.CB1') + $('DocParam.CB2') + $('DocParam.CB3') + $('DocParam.CB4')';'F0') == '1'"> <Label Content="Eine Checkbox angewählt"></Label> </Row> <Row Bind="IsVisible: Calc('$('DocParam.CB1') + $('DocParam.CB2') + $('DocParam.CB3') + $('DocParam.CB4')';'F0') == '2'"> <Label Content="Zwei Checkboxen angewählt"></Label> </Row> <Row Bind="IsVisible: Calc('$('DocParam.CB1') + $('DocParam.CB2') + $('DocParam.CB3') + $('DocParam.CB4')';'F0') == 3"> <Label Content="Drei Checkboxen angewählt"></Label> </Row> <Row Bind="IsVisible: Calc('$('DocParam.CB1') + $('DocParam.CB2') + $('DocParam.CB3') + $('DocParam.CB4')';'F0') == 4"> <Label Content="Vier Checkboxen angewählt"></Label> </Row> <Button Type="Submit" Label="OK" IsDefault="true" /> <Button Type="Cancel" Label="Abbrechen" /> </View> </Views> </Configuration> |
...