<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.augmensys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CWI</id>
		<title>UBIK Wiki / Augmensys - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.augmensys.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CWI"/>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Special:Contributions/CWI"/>
		<updated>2026-04-24T19:56:16Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29724</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29724"/>
				<updated>2026-04-23T13:49:29Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* XAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
'''Limitations'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Multi_Select_%28UBIK_Client%29#Editing_common_properties_of_selected_items_.28UWP_only.29|Mass editing]] is currently not supported for Properties containing Active Lists.&lt;br /&gt;
* Copy and Paste for Active Lists is not supported. When copying an object containing Active Lists, the copy of the object will not contain these Active Lists. In this case, the editing UI of the pasted object will appear like that of a standard Integer Property. If a value has already been selected, this value will be copied, though.&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically. As also mentioned [[UBIK_WinX_Client_Basics#Selective_List_Properties|here]], the following XAML changes are necessary:&lt;br /&gt;
&lt;br /&gt;
'''Required adaptions of the ''ItemsSource'' binding:'''&lt;br /&gt;
If you have old customizings, the '''ItemsSource''' binding needs to be adapted. Instead of binding to the ''PropertyViewModel'' and using the ''SelectiveListToItemsConverter'', you should now directly bind to ''PropertyViewModel.SelectiveItems'' without the use of a SelectiveListToItemsConverter. In the case of previously binding to ''MetaProperty.SelectiveList.Items'' (or ''MetaProperty.SelectiveList'' plus using the ''SelectiveListToItemsConverter''), the binding should be changed to ''SelectiveItems'' only.&lt;br /&gt;
Depending on whether a SelectiveList or an ActiveList is configured, the proper list will be chosen automatically.&lt;br /&gt;
&lt;br /&gt;
'''Refactoring of the ''SelectedItem ConverterParameter'' binding (Mobile only):'''&lt;br /&gt;
Instead of binding to the ContentView x:Name (e.g. ''ConverterParameter={Binding Source={x:Reference YourContentView}}''), it should be changed to the x:Name of the SfListViewExt control and adding the ItemsSource as Path (e.g. ''ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}'').&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI) before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Name=&amp;quot;YourContentView&amp;quot; ...&amp;gt;&lt;br /&gt;
   &amp;lt;controls:SfListViewExt&lt;br /&gt;
       x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
       BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
       ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
       ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
       ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItems}}&amp;quot;&lt;br /&gt;
       SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference YourContentView}}}&amp;quot;&lt;br /&gt;
       SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
       SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
       Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItemsConverter}}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29723</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29723"/>
				<updated>2026-04-23T13:45:34Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* XAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
'''Limitations'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Multi_Select_%28UBIK_Client%29#Editing_common_properties_of_selected_items_.28UWP_only.29|Mass editing]] is currently not supported for Properties containing Active Lists.&lt;br /&gt;
* Copy and Paste for Active Lists is not supported. When copying an object containing Active Lists, the copy of the object will not contain these Active Lists. In this case, the editing UI of the pasted object will appear like that of a standard Integer Property. If a value has already been selected, this value will be copied, though.&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically. As also mentioned [[UBIK_WinX_Client_Basics#Selective_List_Properties|here]], the following XAML changes are necessary:&lt;br /&gt;
&lt;br /&gt;
'''Required adaptions of the ''ItemsSource'' binding:'''&lt;br /&gt;
If you have old customizings, the '''ItemsSource''' binding needs to be adapted. Instead of binding to the ''PropertyViewModel'' and using the ''SelectiveListToItemsConverter'', you should now directly bind to ''PropertyViewModel.SelectiveItems'' without the use of a SelectiveListToItemsConverter. In the case of previously binding to ''MetaProperty.SelectiveList.Items'' (or ''MetaProperty.SelectiveList'' plus using the ''SelectiveListToItemsConverter''), the binding should be changed to ''SelectiveItems'' only.&lt;br /&gt;
Depending on whether a SelectiveList or an ActiveList is configured, the proper list will be chosen automatically.&lt;br /&gt;
&lt;br /&gt;
'''Refactoring of the ''SelectedItem ConverterParameter'' binding (Mobile only):'''&lt;br /&gt;
Instead of binding to the ContentView x:Name (e.g. ''ConverterParameter={Binding Source={x:Reference YourContentView}}''), it is now possible to bind to the x:Name of the SfListViewExt control and adding the ItemsSource as Path (e.g. ''ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}'').&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI) before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Name=&amp;quot;YourContentView&amp;quot; ...&amp;gt;&lt;br /&gt;
   &amp;lt;controls:SfListViewExt&lt;br /&gt;
       x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
       BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
       ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
       ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
       ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItems}}&amp;quot;&lt;br /&gt;
       SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference YourContentView}}}&amp;quot;&lt;br /&gt;
       SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
       SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
       Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItemsConverter}}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29722</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29722"/>
				<updated>2026-04-23T13:34:17Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* XAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
'''Limitations'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Multi_Select_%28UBIK_Client%29#Editing_common_properties_of_selected_items_.28UWP_only.29|Mass editing]] is currently not supported for Properties containing Active Lists.&lt;br /&gt;
* Copy and Paste for Active Lists is not supported. When copying an object containing Active Lists, the copy of the object will not contain these Active Lists. In this case, the editing UI of the pasted object will appear like that of a standard Integer Property. If a value has already been selected, this value will be copied, though.&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically. As also mentioned [[UBIK_WinX_Client_Basics#Selective_List_Properties|here]], the following XAML changes are necessary:&lt;br /&gt;
&lt;br /&gt;
'''Required adaptions of the ''ItemsSource'' binding:'''&lt;br /&gt;
If you have old customizings, the '''ItemsSource''' binding needs to be adapted. Instead of binding to the ''PropertyViewModel'' and using the ''SelectiveListToItemsConverter'', you should now directly bind to ''PropertyViewModel.SelectiveItems'' without the use of a SelectiveListToItemsConverter. In the case of previously binding to ''MetaProperty.SelectiveList.Items'' (or ''MetaProperty.SelectiveList'' plus using the ''SelectiveListToItemsConverter''), the binding should be changed to ''SelectiveItems'' only.&lt;br /&gt;
Depending on whether a SelectiveList or an ActiveList is configured, the proper list will be chosen automatically.&lt;br /&gt;
&lt;br /&gt;
'''Optional refactoring of the ''SelectedItem ConverterParameter'' binding (Mobile only):'''&lt;br /&gt;
Instead of binding to the ContentView x:Name (e.g. ''ConverterParameter={Binding Source={x:Reference YourContentView}}''), it is now possible to bind to the x:Name of the SfListViewExt control and adding the ItemsSource as Path (e.g. ''ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}'').&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI) before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Name=&amp;quot;YourContentView&amp;quot; ...&amp;gt;&lt;br /&gt;
   &amp;lt;controls:SfListViewExt&lt;br /&gt;
       x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
       BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
       ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
       ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
       ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItems}}&amp;quot;&lt;br /&gt;
       SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference YourContentView}}}&amp;quot;&lt;br /&gt;
       SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
       SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
       Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItemsConverter}}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29721</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29721"/>
				<updated>2026-04-23T13:32:01Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* XAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
'''Limitations'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Multi_Select_%28UBIK_Client%29#Editing_common_properties_of_selected_items_.28UWP_only.29|Mass editing]] is currently not supported for Properties containing Active Lists.&lt;br /&gt;
* Copy and Paste for Active Lists is not supported. When copying an object containing Active Lists, the copy of the object will not contain these Active Lists. In this case, the editing UI of the pasted object will appear like that of a standard Integer Property. If a value has already been selected, this value will be copied, though.&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically. As also mentioned [[UBIK_WinX_Client_Basics#Selective_List_Properties|here]], the following XAML changes are necessary:&lt;br /&gt;
&lt;br /&gt;
'''Required adaptions of the ''ItemsSource'' binding:'''&lt;br /&gt;
If you have old customizings, the '''ItemsSource''' binding needs to be adapted. Instead of binding to the ''PropertyViewModel'' and using the ''SelectiveListToItemsConverter'', you should now directly bind to ''PropertyViewModel.SelectiveItems'' without the use of a SelectiveListToItemsConverter. In the case of previously binding to ''MetaProperty.SelectiveList.Items'' (or ''MetaProperty.SelectiveList'' plus using the ''SelectiveListToItemsConverter''), the binding should be changed to ''SelectiveItems'' only.&lt;br /&gt;
Depending on whether a SelectiveList or an ActiveList is configured, the proper list will be chosen automatically.&lt;br /&gt;
&lt;br /&gt;
'''Optional refactoring of the ''SelectedItem ConverterParameter'' binding (Mobile only):'''&lt;br /&gt;
Instead of binding to the ContentView x:Name (e.g. ''ConverterParameter={Binding Source={x:Reference YourContentView}}''), it is now possible to bind to the x:Name of the SfListViewExt control and adding the ItemsSource as Path (e.g. ''ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}'').&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI) before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Name=&amp;quot;YourContentView&amp;quot; ...&amp;gt;&lt;br /&gt;
   &amp;lt;controls:SfListViewExt&lt;br /&gt;
       x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
       BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
       ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
       ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
       ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItemsConverter}}&amp;quot;&lt;br /&gt;
       SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference YourContentView}}}&amp;quot;&lt;br /&gt;
       SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
       SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
       Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP before change&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel, Converter={StaticResource SelectiveListToItemsConverter}}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29719</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29719"/>
				<updated>2026-04-23T12:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Selective List Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Mobile and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Languages ==&lt;br /&gt;
The standard {{UBIK}} client supports multiple languages listed below. {{Version/WinXSince|4.3}}&lt;br /&gt;
* Chinese (Simplified)&lt;br /&gt;
* Czech&lt;br /&gt;
* English&lt;br /&gt;
* German&lt;br /&gt;
* Polish&lt;br /&gt;
* Portuguese&lt;br /&gt;
* Spanish&lt;br /&gt;
{{Attention|As we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows &amp;quot;Preferred languages / Add a language&amp;quot; setting. For example, if you have only English installed when you install {{UBIK}}, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall {{UBIK}}. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.}}&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
==== Saving Indicator ====&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
==== Uncommitted Changes Indicator ====&lt;br /&gt;
{{Version/WinXSince|4.6.0}} When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Version/WinXSince|4.7.0}} Queries are now excluded from uncommitted changes.&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the [[SYSCLS_CHILDINFOOWNER|child info owner classification]], one can additionally show the number of documents and regular grandchildren to be expected for a child object.&lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
=== Properties Page ===&lt;br /&gt;
&lt;br /&gt;
On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
[[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Task|Tasks]] and [[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Work_Package|work packages]] are special types of {{UBIK}} objects used for maintenance, repair and overhaul (MRO) use-cases.&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
Queries are special types of {{UBIK}} objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are [[QUERY|online queries]] evaluated by the server, and [[https://wiki.augmensys.com/index.php?title=Offline_Query_(UBIK_WinX)|offline queries]] evaluated on the client, thus requiring no internet connection.&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
Object classified as [[SYSCLS_SAFETY_RELEVANT_OBJECT|safety relevant]] require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., [[SYSCLS_COMMISSIONINGCHECK|commissioning check tasks]].&lt;br /&gt;
&lt;br /&gt;
==== Locked objects  ====&lt;br /&gt;
In several use-cases, objects can be [[Locked_Objects|locked]] for editing.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Authentication Properties ====&lt;br /&gt;
[[SYSCLS_REQUIRE_AUTHENTICATION|Authentication Properties]] are properties which need a user authentication (through a password field) to be edited.&lt;br /&gt;
&lt;br /&gt;
==== Min max properties ====&lt;br /&gt;
See [[Min_Max_Properties]].&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
[[Live_Values]] are specific property values extracted from a process control system like OPC-UA or OSIPI. &lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properties having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a &amp;quot;selective list&amp;quot; in {{UBIK}}.&lt;br /&gt;
Furthermore, there are [[Dynamic_Selective_List_(Client)|dynamic selective lists]] that can be filtered or assembled based on dependency property values.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Hint|{{Version/WinXSince|5.1.0.0}}{{Version/MobileSince|5.1.0.0}} The ItemsSource binding of related WinX/Mobile controls in Xaml now requires only '''PropertyViewModel.SelectiveItems''', which will return the items of an [[Active_List_Client|ActiveList]], or the items of a MetaProperty.SelectiveList, depending on the server-side configuration. In this case, the [[Converters_In_Mobile#List_of_Available_Converters|SelectiveListToItemsConverter]] is outdated and should not be used anymore.}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
==== String properties with length restrictions ====&lt;br /&gt;
A string property can be configured with a [[MetaProperty#Text_2|length restriction]]. The client property editing UI doesn't allow users to confirm values exceeding the limit.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== [[Editors]] ====&lt;br /&gt;
&lt;br /&gt;
See [[Editors]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
See [[Documents_(Client)|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
See [[Documents_(Client)#Fit_Mode|Fit Mode]]&lt;br /&gt;
&lt;br /&gt;
==== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====&lt;br /&gt;
See [[Documents_(Client)#Auto_zoom|Auto zoom]]&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
See [[Documents_(Client)#Editing|Editing]]&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
See [[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
[[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT_FITMODE]]&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29716</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29716"/>
				<updated>2026-04-21T08:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
'''Limitations'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Multi_Select_%28UBIK_Client%29#Editing_common_properties_of_selected_items_.28UWP_only.29|Mass editing]] is currently not supported for Properties containing Active Lists.&lt;br /&gt;
* Copy and Paste for Active Lists is not supported. When copying an object containing Active Lists, the copy of the object will not contain these Active Lists. In this case, the editing UI of the pasted object will appear like that of a standard Integer Property. If a value has already been selected, this value will be copied, though.&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29715</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29715"/>
				<updated>2026-04-20T13:21:21Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Selective List Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Mobile and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Languages ==&lt;br /&gt;
The standard {{UBIK}} client supports multiple languages listed below. {{Version/WinXSince|4.3}}&lt;br /&gt;
* Chinese (Simplified)&lt;br /&gt;
* Czech&lt;br /&gt;
* English&lt;br /&gt;
* German&lt;br /&gt;
* Polish&lt;br /&gt;
* Portuguese&lt;br /&gt;
* Spanish&lt;br /&gt;
{{Attention|As we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows &amp;quot;Preferred languages / Add a language&amp;quot; setting. For example, if you have only English installed when you install {{UBIK}}, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall {{UBIK}}. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.}}&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
==== Saving Indicator ====&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
==== Uncommitted Changes Indicator ====&lt;br /&gt;
{{Version/WinXSince|4.6.0}} When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Version/WinXSince|4.7.0}} Queries are now excluded from uncommitted changes.&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the [[SYSCLS_CHILDINFOOWNER|child info owner classification]], one can additionally show the number of documents and regular grandchildren to be expected for a child object.&lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
=== Properties Page ===&lt;br /&gt;
&lt;br /&gt;
On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
[[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Task|Tasks]] and [[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Work_Package|work packages]] are special types of {{UBIK}} objects used for maintenance, repair and overhaul (MRO) use-cases.&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
Queries are special types of {{UBIK}} objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are [[QUERY|online queries]] evaluated by the server, and [[https://wiki.augmensys.com/index.php?title=Offline_Query_(UBIK_WinX)|offline queries]] evaluated on the client, thus requiring no internet connection.&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
Object classified as [[SYSCLS_SAFETY_RELEVANT_OBJECT|safety relevant]] require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., [[SYSCLS_COMMISSIONINGCHECK|commissioning check tasks]].&lt;br /&gt;
&lt;br /&gt;
==== Locked objects  ====&lt;br /&gt;
In several use-cases, objects can be [[Locked_Objects|locked]] for editing.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Authentication Properties ====&lt;br /&gt;
[[SYSCLS_REQUIRE_AUTHENTICATION|Authentication Properties]] are properties which need a user authentication (through a password field) to be edited.&lt;br /&gt;
&lt;br /&gt;
==== Min max properties ====&lt;br /&gt;
See [[Min_Max_Properties]].&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
[[Live_Values]] are specific property values extracted from a process control system like OPC-UA or OSIPI. &lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properties having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a &amp;quot;selective list&amp;quot; in {{UBIK}}.&lt;br /&gt;
Furthermore, there are [[Dynamic_Selective_List_(Client)|dynamic selective lists]] that can be filtered or assembled based on dependency property values.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Hint|{{Version/WinXSince|5.1.0.0}}{{Version/MobileSince|5.1.0.0}} The ItemsSource binding of related WinX/Mobile controls in Xaml now requires only '''PropertyViewModel.SelectiveItems''', which will return the items of an [[Active_List_Client|ActiveList]], or the items of a MetaProperty.SelectiveList, depending on the server-side configuration. Mobile only: In this case, the [[Converters_In_Mobile#List_of_Available_Converters|SelectiveListToItemsConverter]] is outdated and should not be used anymore.}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
==== String properties with length restrictions ====&lt;br /&gt;
A string property can be configured with a [[MetaProperty#Text_2|length restriction]]. The client property editing UI doesn't allow users to confirm values exceeding the limit.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== [[Editors]] ====&lt;br /&gt;
&lt;br /&gt;
See [[Editors]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
See [[Documents_(Client)|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
See [[Documents_(Client)#Fit_Mode|Fit Mode]]&lt;br /&gt;
&lt;br /&gt;
==== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====&lt;br /&gt;
See [[Documents_(Client)#Auto_zoom|Auto zoom]]&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
See [[Documents_(Client)#Editing|Editing]]&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
See [[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
[[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT_FITMODE]]&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Converters_In_Mobile&amp;diff=29714</id>
		<title>Converters In Mobile</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Converters_In_Mobile&amp;diff=29714"/>
				<updated>2026-04-20T13:19:26Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* List of Available Converters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Converters''' are used to prepare application data to format a UI defined by a XAML markup. These converters make it possible to show elements only when specific conditions (like data being available) are met. This allows the creation of a good UI with XAML code only, improving code readability while also decreasing code complexity.&lt;br /&gt;
&lt;br /&gt;
This page explains how to properly use converters for customizing the UBIK Mobile User Interface. Furthermore, all available converters are listed to provide a good reference.&lt;br /&gt;
&lt;br /&gt;
= Definition =&lt;br /&gt;
In Mobile clients, before converters can be used, they need to be defined in the page's ''Resources'' tag. Make sure to include the &amp;lt;code&amp;gt;UBIK.CPL.Converters&amp;lt;/code&amp;gt; namespace in the namespace definitions!&lt;br /&gt;
The following example shows how the &amp;lt;code&amp;gt;NullToBoolConverter&amp;lt;/code&amp;gt; can be defined:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Mobile(Xamarin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:converters=&amp;quot;clr-namespace:UBIK.CPL.Converters;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;converters:NullToBoolConverter x:Key=&amp;quot;NullToBool&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Cuztomizing --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The key ''NullToBool'' makes this converter accessible from the customizing in this page.&lt;br /&gt;
== Definition With Properties ==&lt;br /&gt;
In the following example, which is the same example from above, the '''StringFormatConverter''' will be additionally defined. To add more formatting possibilities, it has two extra properties, which need to be prefilled during initialization. Henceforth, these properties can be prefilled with static values or with static references.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Mobile(Xamarin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:converters=&amp;quot;clr-namespace:UBIK.CPL.Converters;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;converters:NullToBoolConverter x:Key=&amp;quot;NullToBool&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;Formatter&amp;quot; Parameter1=&amp;quot;5&amp;quot; Parameter2=&amp;quot;{Binding Children.Items.Count}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Cuztomizing --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Whereever this converter is used within the file it was defined in, ''Formatter'' will always have its ''Parameter1'' set to ''5'' and its ''Parameter2'' to the number of children of the currently viewed UBIK object. If this behavior is not intended, consider defining another ''StringFormatConverter'' with a '''different Key''' in the same way as shown above.&amp;lt;br/&amp;gt;&lt;br /&gt;
See below to find out how to use this converter!&lt;br /&gt;
= Usage =&lt;br /&gt;
A converter can only be used in conjunction with a &amp;lt;code&amp;gt;{Binding}&amp;lt;/code&amp;gt;. The following is an easy example, showing how the ''NullToBool'' converter, defined above, can be used.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;My Text&amp;quot; IsVisible=&amp;quot;{Binding MyBindableProperty, Converter={StaticResource NullToBool}}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If '''MyBindableProperty''' is ''null'' or an empty string, the converter will return '''true''', making the Label visible!&lt;br /&gt;
== Parameter ==&lt;br /&gt;
Some converters accept a '''ConverterParameter''', that passes additional information. Closely read the description of the available converters to find out which accept or even require a parameter to work properly. In Ubik, some converters accept a string parameter, consisting of multiple individual parameters separated by &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An example of this behavior is the '''ContainsToBoolConverter''', which checks if the current value is contained within a collection of values (passed as the ''parameter''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;My Text&amp;quot; IsVisible=&amp;quot;{Binding MyValue, Converter={StaticResource ContainsToBool}, ConverterParameter=1|2|3|4|5|6|7|8|9}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The label will only be visible if the ''MyValue'' property (which is expected to parse as an Integer in this example) is one of the values of the parameter.&amp;lt;br/&amp;gt;&lt;br /&gt;
Again, to get the converter working, don't forget to define it in the page's resources!&lt;br /&gt;
&lt;br /&gt;
== FallbackValue ==&lt;br /&gt;
In some rare cases, a converter might not return anything desired (like ''null'') if some condition doesn't work out as it should (e.g. ''value'' is ''null''). To still be able to get a usable return value, it's possible to define a '''FallbackValue'''.&lt;br /&gt;
&lt;br /&gt;
== Example Usage of StringFormatConverter ==&lt;br /&gt;
This converter can take up to two additional parameters during definition. Please see [[#Definition With Properties|Definition With Properties]] for more information!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding MyValue, Converter={StaticResource Formatter}, ConverterParameter=The Value of my value is \{0\}\, compared to \{1\} and \{2\}!}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
It's important to note that special characters, like &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;,&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, need to be escaped using a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, else the expression will be wrongly interpreted (and nothing happens)!&lt;br /&gt;
&lt;br /&gt;
The text of the '''ConverterParameter''' will be analyzed, and any occurrance (including duplicates) of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{1}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{2}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; replaced with the '''binding value''', '''Formatter.Parameter1''' and '''Formatter.Parameter2''' respectively!&lt;br /&gt;
&lt;br /&gt;
Make sure to note, that Maui has a native '''[https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/string-formatting?view=net-maui-9.0 string formatting]''' option as well, that is probably way faster than using a converter for it. Furthermore, it supports formatting options!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Data Source =&lt;br /&gt;
Although technically not a converter, the '''SfDataSourceExt''' control is currently on the way of replacing the '''SfDataSourceConverter''', due to improved performance.&lt;br /&gt;
The usage is pretty simple: Similar to the converters, it needs to be defined in the '''Page Resources'''. Then, a '''Key''' and '''Expression''', as well as an '''ItemsSource''' have to be defined. Last, but not least, the the converter can be used within the '''ItemsSource''' property of a Syncfusion '''SfListView'''. See the following example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Mobile(Xamarin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
             &amp;lt;controls:SfDataSourceExt&lt;br /&gt;
                x:Key=&amp;quot;MyDataSource&amp;quot;&lt;br /&gt;
                ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;Item.Content.MetaUID.ToString().ToLower()==&amp;amp;quot;85a50533-3817-4a0b-84cd-615b48b62565&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Item[&amp;amp;quot;ORGA_STATUS&amp;amp;quot;]!=100&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
    &amp;lt;sync:SfListView&lt;br /&gt;
           x:Name=&amp;quot;ListView1&amp;quot;&lt;br /&gt;
           AllowSwiping=&amp;quot;True&amp;quot;&lt;br /&gt;
           ItemSize=&amp;quot;60&amp;quot;&lt;br /&gt;
           ItemTemplate=&amp;quot;{StaticResource ChildTemplateSelector}&amp;quot;&lt;br /&gt;
           ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource MyDataSource}}&amp;quot;&lt;br /&gt;
           LeftSwipeTemplate=&amp;quot;{StaticResource SwipeLeftTemplateSelector}&amp;quot;&lt;br /&gt;
           RightSwipeTemplate=&amp;quot;{StaticResource SwipeRightTemplateSelector}&amp;quot;&lt;br /&gt;
           SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Thanks to the given expression, filtering is applied once the data source is evaluated. It's important to have [https://www.advancedinstaller.com/user-guide/xml-escaped-chars.html XML special characters] correctly escaped, like the example shows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of Available Converters =&lt;br /&gt;
The following list contains all currently available converters for UBIK Mobile customizing. &lt;br /&gt;
&lt;br /&gt;
'''Two-way''' converters can be used with two-way bindings, e.g. a text-box displaying an editable value. If the value updates in the model, the text-box text changes. If the user edits the value, the value in the model behind also gets updated.&lt;br /&gt;
As a clarification, '''Value''' refers to the '''Binding Value''', and '''parameter''' to the '''ConverterParameter'''!&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Converter !! 2-Way !! Output Type || Input Type || Parameter Type || Description &lt;br /&gt;
|-&lt;br /&gt;
| BooleanConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Boolean, String || || &lt;br /&gt;
Interprets a '''boolean value''' or a '''String value''' and returns it. If the value cannot be interpreted, ''false'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| BooleanInvertConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Boolean, String || || &lt;br /&gt;
Interprets a '''boolean value''' or a '''String value''' and converts it into its '''inverted value'''. If the value cannot be interpreted, ''false'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| BooleanToFontAttributeConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || FontAttribute || Boolean || || &lt;br /&gt;
Converts a '''boolean''' into a '''[https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.fontattributes?view=xamarin-forms font attribute]''' value. In detail, if the value is ''true'', the parameter is interpreted (''Bold'', ''Italic'', ''None'') and returned. The default returned font-attribute is ''None''.&lt;br /&gt;
|- &lt;br /&gt;
| ByteToImageSourceValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ImageSource || Byte[ ],&amp;lt;br/&amp;gt;Byte Stream || || &lt;br /&gt;
Converts a '''byte stream''' value into an '''image source'''.&lt;br /&gt;
|- &lt;br /&gt;
| ChildAreaTemplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Child&amp;lt;wbr/&amp;gt;Area&amp;lt;wbr/&amp;gt;Template || Content&amp;lt;wbr/&amp;gt;ViewModel || || &lt;br /&gt;
Returns a '''ChildAreaTemplate''' from a '''Content&amp;lt;wbr/&amp;gt;ViewModel''' or ''null'' if the ViewModel cannot be interpreted.&lt;br /&gt;
|- &lt;br /&gt;
| ChildItem&amp;lt;wbr/&amp;gt;SelectionMode&amp;lt;wbr/&amp;gt;To&amp;lt;wbr/&amp;gt;SfListView&amp;lt;wbr/&amp;gt;SelectionMode&amp;lt;wbr/&amp;gt;Converter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || [https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~SelectionMode.html ListView&amp;lt;wbr/&amp;gt;SelectionMode] || ChildItem&amp;lt;wbr/&amp;gt;SelectionMode || || &lt;br /&gt;
Converts a '''ChildItem&amp;lt;wbr/&amp;gt;SelectionMode''' to a Syncfusion '''[https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~SelectionMode.html ListView&amp;lt;wbr/&amp;gt;SelectionMode]'''. Default is &amp;quot;Single&amp;quot;.&lt;br /&gt;
|- &lt;br /&gt;
| ClassificationToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || ContentViewModel || || &lt;br /&gt;
Returns a '''boolean''' indicating whether the given '''ContentViewModel''' is successfully classified.&lt;br /&gt;
|- &lt;br /&gt;
| ContainsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Checks if the delivered value is '''contained''' within a collection of values (delivered in the parameter, seperated with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). If the value is contained, ''true'' will be returned, else ''false''. The functionality is similar to the ''ContainsToVisibilityConverter'' in the WinX project.&lt;br /&gt;
|- &lt;br /&gt;
| ContainsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Same as the ''ContainsToBoolConverter'', but with '''inverted output'''.&lt;br /&gt;
|- &lt;br /&gt;
| ContentAreaTeamplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || UBIKContentArea || ContentViewModel || || This converter is '''not yet finished''' and just returns the ''UBIKContentArea'' if the value is a ''ContentViewModel''.&lt;br /&gt;
|- &lt;br /&gt;
| StringToDateTimeTypesConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓  || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime], [https://docs.microsoft.com/en-us/dotnet/api/system.timespan TimeSpan] || String || || &lt;br /&gt;
Converts a String to the correct DateType, which can be either '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' or '''[https://docs.microsoft.com/en-us/dotnet/api/system.timespan TimeSpan]'''. If the value cannot be interpreted, the unchanged String value is returned. The Converter can also be used to convert DateTime or TimeSpan into a string. The Format will be determined by the current culture.&lt;br /&gt;
|- &lt;br /&gt;
| DateTimeOffsetToDateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime] || [https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset DateTimeOffset] || || &lt;br /&gt;
Converts a '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset DateTimeOffset]''' to the correct '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''', applied to the current date and time. If the value cannot be interpreted, a new ''DateTime'', generated from the device's current time (&amp;lt;code&amp;gt;DateTime.Now&amp;lt;/code&amp;gt;) is returned.&lt;br /&gt;
|- &lt;br /&gt;
| DateTimeToFromNowStringConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime] || || &lt;br /&gt;
Returns a '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' into a human-readable and easily understandable ''string message'' (the last applying one will be taken):&lt;br /&gt;
* Less than 5 minutes in the past: ''Just now''&lt;br /&gt;
* Less than 10 minutes in the past: ''A few minutes ago''&lt;br /&gt;
* Less than 1 hour in the past: ''An hour ago''&lt;br /&gt;
* Less than 23 Hours in the past: ''Some hours ago''&lt;br /&gt;
* Less than 1 day in the past: ''Yesterday''&lt;br /&gt;
* More than 1 day in the past: The ''DateTime'' value formatted according to the device's localization rules.&lt;br /&gt;
* Not interpretable: ''???''&lt;br /&gt;
|- &lt;br /&gt;
| DebugConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Object || Object || || &lt;br /&gt;
A converter returning the given value for '''debug reasons'''.&lt;br /&gt;
|- &lt;br /&gt;
| DistanceToStringConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Double || || &lt;br /&gt;
Returns the given value interpreted as '''length'''. Values are returned in kilometers with two comma digits (e.g. 2.84km), values smaller than 1km are returned as meters and ''NaN'' will be returned as ''infinity''. If the value cannot be interpreted, an empty string will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| EqualityToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object,&amp;lt;br/&amp;gt;String || Object,&amp;lt;br/&amp;gt;String || &lt;br /&gt;
Returns ''true'' if the given value and parameter are '''equal to each other''', ''false'' otherwise.&lt;br /&gt;
|- &lt;br /&gt;
| EqualityToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object,&amp;lt;br/&amp;gt;String || Object,&amp;lt;br/&amp;gt;String || &lt;br /&gt;
Returns ''true'' if the given value and parameter are '''not equal to each other''', ''false'' otherwise.&lt;br /&gt;
|- &lt;br /&gt;
| SelectionChangedEventArgsConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.selectionchangedeventargs List&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs] || [https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs.html Item&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs] || || &lt;br /&gt;
Converts an Syncfusion '''[https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs.html Item&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs]''' to a '''[https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.selectionchangedeventargs List&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs]'''. &amp;lt;br/&amp;gt;The use-case of this converter is highly specific.&lt;br /&gt;
|- &lt;br /&gt;
| FilterCriterionToValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || String || FilterCriterion || || &lt;br /&gt;
Converts a [[Property_Based_Content_Filters|'''FilterCriterion''']] to its value. The functionality is similar to UWP's FilterCriterionToValueConverter.&lt;br /&gt;
|- &lt;br /&gt;
| GuidPropertyValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || String || Guid || Binding, where source is ContentViewModel || &lt;br /&gt;
Returns the '''first item''' of the parameter's ''Source-ViewModel'' that '''matches the given GUID''' value. If none is found, ''null'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| IntToColorConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Color || Integer || || &lt;br /&gt;
Converts an ARGB '''integer''' value to a '''color'''. If the value cannot be interpreted, the converter tries to parse the parameter as a ''color'' to return it. If everything fails, ''transparent'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| ItemCountToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Integer || Integer || &lt;br /&gt;
This converter has a '''property''' to set the '''boolean return value''', called ''LesserOrEqualReturnValue''. This property-value will be returned if the given value is '''smaller than or equal to''' the threshold (parameter, defaults to 0). If the value is '''bigger than''' the threshold, the '''inverted''' ''LesserOrEqualReturnValue'' will be returned.&amp;lt;br/&amp;gt;&lt;br /&gt;
In any other case (like the value cannot be interpreted), ''false'' is returned, so it's a good idea to set the converter's property in a way that the return is only ''true'' if you need it.&lt;br /&gt;
|- &lt;br /&gt;
| ItemCountToOverflowConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Integer || Integer || Creates a '''human-readable text''' indicating '''how many items are available'''. The value will be interpreted as the '''total item count''' and the parameter as '''overflow threshold''' (defaults to 99). &amp;lt;br/&amp;gt;If there are more items than the overflow, the overflow value with a + sign will be returned (e.g. 99+). If not, the value itself will be returned. If everything fails, ''null'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| NullToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Object,&amp;lt;br/&amp;gt;String|| || &lt;br /&gt;
''Null'' or an '''empty string''' value get converted to ''true'', and everything else to ''false''.&lt;br /&gt;
|- &lt;br /&gt;
| NullToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Object,&amp;lt;br/&amp;gt;String || || &lt;br /&gt;
''Null'' or an '''empty string''' value get converted to ''false'', and everything else to ''true''.&lt;br /&gt;
|- &lt;br /&gt;
| PathToImageSourceValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Image Source || String || || &lt;br /&gt;
Reads the '''path''' provided as parameter and creates an '''image source''' from it.&lt;br /&gt;
|- &lt;br /&gt;
| PercentageToProgressConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Double || Integer,&amp;lt;br/&amp;gt;Double || || &lt;br /&gt;
The '''numeric value'''  (int or double), interpreted as '''percentage from 0 to 100''', get converted to a '''progress level'''  (0 to 1). Values outside this range will be contained.&lt;br /&gt;
|- &lt;br /&gt;
| PropertyNameExistsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean (Nullable) || ContentViewModel,&amp;lt;br/&amp;gt;IContent || || &lt;br /&gt;
Converts a property to a '''boolean''' based on its '''existence'''. If it exists, ''true'' will be returned, else ''false'' or ''null'' (if something couldn't be properly interpreted).&lt;br /&gt;
|- &lt;br /&gt;
| PropertyNameExistsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean (Nullable) || ContentViewModel,&amp;lt;br/&amp;gt;IContent || || &lt;br /&gt;
Converts a property to a '''boolean''' based on its '''existence'''. If it exists, ''false'' will be returned, else ''true'' or ''null'' (if something couldn't be properly interpreted).&lt;br /&gt;
|- &lt;br /&gt;
&lt;br /&gt;
| PropertyValueToSelectiveItemConverter  || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Converts a '''item''' of an [[Active List Client]] or a [[MetaProperty]] [[MetaProperty#Selective List|Selective List]] to its value. If none is found, null will be returned.&lt;br /&gt;
|- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| RootAreaTemplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ContentView || Object || || &lt;br /&gt;
If the provided value is '''not null''', the '''UBIKRootArea template''' will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| SelectiveItemToValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Binding, where source is ContentViewModel || &lt;br /&gt;
Converts a '''item''' of a '''selective list''' to its value. If none is found, the passed ''value'' will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| SelectiveListToItemsConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || List of PropertyItems  || IPropertyItem || || &lt;br /&gt;
Returns all items from a selective list. The converter can only be used in combination with a standard MetaProperty level [[SELECTIVELIST|SelectiveList]], not with an instance level [[Active_List_Client|Active list]]. Further infos see in [[UBIK_WinX_Client_Basics#Selective_List_Properties|Selective List Properties]].&lt;br /&gt;
|- &lt;br /&gt;
| SfDataSourceConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || DataSource (for ListView) || Double || String (Expression) || &lt;br /&gt;
It's an advanced converter used for '''loading items''' and '''applying filters''' on it. It replaces to ''CollectionToViewConverter'' from the WinX.UWP project. The data source can be directly used with a ''[https://help.syncfusion.com/xamarin/sflistview/overview SfListView]''.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''This converter is obsolete!'''&amp;lt;br/&amp;gt;Use '''SfDataSourceExt''' (see [[#Data Source|Data Source]]) instead!&lt;br /&gt;
|- &lt;br /&gt;
| StringContainsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String || String || &lt;br /&gt;
Returns a '''boolean''' indicating whether the parameter string is included in the value string.&lt;br /&gt;
|- &lt;br /&gt;
| StringContainsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String || String || &lt;br /&gt;
Same as the ''StringContainsToBoolConverter'' but with '''inverted output'''.&lt;br /&gt;
|- &lt;br /&gt;
| StringFormatConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Object || String || Allows the creation of a '''nicely formatted ''string'' message''', similar to [https://docs.microsoft.com/en-us/dotnet/api/system.string.format C#'s String.Format method].&amp;lt;br/&amp;gt;The value will be interpreted as the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element, and the parameter is the template string (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;The total count is: {0}!&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Up to two additional parameters, named ''Parameter1'' and ''Parameter2'', can be defined at the converter declaration. Adding formatting options to the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; notation is not possible.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Attention''', using the native '''[https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/string-formatting StringFormat]''' option is not only faster, but it also offers more customizability of the value!&amp;lt;br/&amp;gt;&lt;br /&gt;
You might still want to use the ''StringFormatConverter'' in rare cases, though!&lt;br /&gt;
|- &lt;br /&gt;
| ToStringFormatConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Double,&amp;lt;br/&amp;gt;Float,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;String || String || Converts '''primitives''' or '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' to string and allows the application of '''[https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings formatting options]''' (as parameter). &amp;lt;br/&amp;gt;Adding a &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; to the end of the format-parameter allows '''[https://docs.microsoft.com/en-us/dotnet/api/system.math.truncate truncation]''' of all decimal places.&lt;br /&gt;
|-&lt;br /&gt;
| TypeNameToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object || String || Returns ''true'' if the type name of the value is present in the parameter-string (seperated by &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
|- &lt;br /&gt;
| TypeNameToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object || String || Inverted ''TypeNameTo&amp;lt;wbr/&amp;gt;BoolConverter''.&lt;br /&gt;
|- &lt;br /&gt;
| DataTemplateItemTemplateSelectorConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ChildItem&amp;lt;wbr/&amp;gt;Template&amp;lt;wbr/&amp;gt;Selector || String || String || Chooses what '''ChildItem&amp;lt;wbr/&amp;gt;Template&amp;lt;wbr/&amp;gt;Selector''' to return. Having a parameter with the content &amp;quot;Small&amp;quot; returns the small item template selector.&lt;br /&gt;
|- &lt;br /&gt;
| DataTemplateItemsPanelConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ItemsPanelTemplate || Query&amp;lt;wbr/&amp;gt;Details&amp;lt;wbr/&amp;gt;Page&amp;lt;wbr/&amp;gt;ViewModel || || Chooses what '''ItemPanel&amp;lt;wbr/&amp;gt;Template''' to return. Having a parameter with the content &amp;quot;Small&amp;quot; returns the small item template selector.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Converters In Xamarin]]&lt;br /&gt;
[[Category:Mobile|Converters In Xamarin]]&lt;br /&gt;
[[Category:XAML|Converters In Xamarin]]&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
[[XAML#Converters|Converters in UWP/WinX]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client | XAML | Xamarin]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Converters In Xamarin]]&lt;br /&gt;
[[Category:Mobile|Converters In Xamarin]]&lt;br /&gt;
[[Category:XAML|Converters In Xamarin]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29713</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29713"/>
				<updated>2026-04-20T13:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Selective List Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Mobile and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Languages ==&lt;br /&gt;
The standard {{UBIK}} client supports multiple languages listed below. {{Version/WinXSince|4.3}}&lt;br /&gt;
* Chinese (Simplified)&lt;br /&gt;
* Czech&lt;br /&gt;
* English&lt;br /&gt;
* German&lt;br /&gt;
* Polish&lt;br /&gt;
* Portuguese&lt;br /&gt;
* Spanish&lt;br /&gt;
{{Attention|As we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows &amp;quot;Preferred languages / Add a language&amp;quot; setting. For example, if you have only English installed when you install {{UBIK}}, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall {{UBIK}}. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.}}&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
==== Saving Indicator ====&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
==== Uncommitted Changes Indicator ====&lt;br /&gt;
{{Version/WinXSince|4.6.0}} When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Version/WinXSince|4.7.0}} Queries are now excluded from uncommitted changes.&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the [[SYSCLS_CHILDINFOOWNER|child info owner classification]], one can additionally show the number of documents and regular grandchildren to be expected for a child object.&lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
=== Properties Page ===&lt;br /&gt;
&lt;br /&gt;
On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
[[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Task|Tasks]] and [[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Work_Package|work packages]] are special types of {{UBIK}} objects used for maintenance, repair and overhaul (MRO) use-cases.&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
Queries are special types of {{UBIK}} objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are [[QUERY|online queries]] evaluated by the server, and [[https://wiki.augmensys.com/index.php?title=Offline_Query_(UBIK_WinX)|offline queries]] evaluated on the client, thus requiring no internet connection.&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
Object classified as [[SYSCLS_SAFETY_RELEVANT_OBJECT|safety relevant]] require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., [[SYSCLS_COMMISSIONINGCHECK|commissioning check tasks]].&lt;br /&gt;
&lt;br /&gt;
==== Locked objects  ====&lt;br /&gt;
In several use-cases, objects can be [[Locked_Objects|locked]] for editing.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Authentication Properties ====&lt;br /&gt;
[[SYSCLS_REQUIRE_AUTHENTICATION|Authentication Properties]] are properties which need a user authentication (through a password field) to be edited.&lt;br /&gt;
&lt;br /&gt;
==== Min max properties ====&lt;br /&gt;
See [[Min_Max_Properties]].&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
[[Live_Values]] are specific property values extracted from a process control system like OPC-UA or OSIPI. &lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properties having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a &amp;quot;selective list&amp;quot; in {{UBIK}}.&lt;br /&gt;
Furthermore, there are [[Dynamic_Selective_List_(Client)|dynamic selective lists]] that can be filtered or assembled based on dependency property values.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Hint|{{Version/WinXSince|5.1.0.0}}{{Version/MobileSince|5.1.0.0}} The ItemsSource binding of related WinX/Mobile controls in Xaml now requires only '''PropertyViewModel.SelectiveItems''', which will return the items of an [[Active_List_Client|ActiveList]], or the items of a MetaProperty.SelectiveList, depending on the server-side configuration. In this case, the SelectiveListToItemsConverter is outdated and should not be used anymore.}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
==== String properties with length restrictions ====&lt;br /&gt;
A string property can be configured with a [[MetaProperty#Text_2|length restriction]]. The client property editing UI doesn't allow users to confirm values exceeding the limit.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== [[Editors]] ====&lt;br /&gt;
&lt;br /&gt;
See [[Editors]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
See [[Documents_(Client)|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
See [[Documents_(Client)#Fit_Mode|Fit Mode]]&lt;br /&gt;
&lt;br /&gt;
==== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====&lt;br /&gt;
See [[Documents_(Client)#Auto_zoom|Auto zoom]]&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
See [[Documents_(Client)#Editing|Editing]]&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
See [[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
[[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT_FITMODE]]&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29712</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29712"/>
				<updated>2026-04-20T13:09:46Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Selective List Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Mobile and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Languages ==&lt;br /&gt;
The standard {{UBIK}} client supports multiple languages listed below. {{Version/WinXSince|4.3}}&lt;br /&gt;
* Chinese (Simplified)&lt;br /&gt;
* Czech&lt;br /&gt;
* English&lt;br /&gt;
* German&lt;br /&gt;
* Polish&lt;br /&gt;
* Portuguese&lt;br /&gt;
* Spanish&lt;br /&gt;
{{Attention|As we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows &amp;quot;Preferred languages / Add a language&amp;quot; setting. For example, if you have only English installed when you install {{UBIK}}, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall {{UBIK}}. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.}}&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
==== Saving Indicator ====&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
==== Uncommitted Changes Indicator ====&lt;br /&gt;
{{Version/WinXSince|4.6.0}} When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Version/WinXSince|4.7.0}} Queries are now excluded from uncommitted changes.&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the [[SYSCLS_CHILDINFOOWNER|child info owner classification]], one can additionally show the number of documents and regular grandchildren to be expected for a child object.&lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
=== Properties Page ===&lt;br /&gt;
&lt;br /&gt;
On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
[[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Task|Tasks]] and [[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Work_Package|work packages]] are special types of {{UBIK}} objects used for maintenance, repair and overhaul (MRO) use-cases.&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
Queries are special types of {{UBIK}} objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are [[QUERY|online queries]] evaluated by the server, and [[https://wiki.augmensys.com/index.php?title=Offline_Query_(UBIK_WinX)|offline queries]] evaluated on the client, thus requiring no internet connection.&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
Object classified as [[SYSCLS_SAFETY_RELEVANT_OBJECT|safety relevant]] require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., [[SYSCLS_COMMISSIONINGCHECK|commissioning check tasks]].&lt;br /&gt;
&lt;br /&gt;
==== Locked objects  ====&lt;br /&gt;
In several use-cases, objects can be [[Locked_Objects|locked]] for editing.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Authentication Properties ====&lt;br /&gt;
[[SYSCLS_REQUIRE_AUTHENTICATION|Authentication Properties]] are properties which need a user authentication (through a password field) to be edited.&lt;br /&gt;
&lt;br /&gt;
==== Min max properties ====&lt;br /&gt;
See [[Min_Max_Properties]].&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
[[Live_Values]] are specific property values extracted from a process control system like OPC-UA or OSIPI. &lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properties having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a &amp;quot;selective list&amp;quot; in {{UBIK}}.&lt;br /&gt;
Furthermore, there are [[Dynamic_Selective_List_(Client)|dynamic selective lists]] that can be filtered or assembled based on dependency property values.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Hint|{{Version/WinXSince|5.1.0.0}}{{Version/MobileSince|5.1.0.0}} The ItemsSource binding of related WinX/Mobile controls in Xaml now requires only PropertyViewModel.SelectiveItems, which will return the items of an [[Active_List_Client|ActiveList]] or of MetaProperty.SelectiveList without a SelectiveListToItemsConverter required.}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
==== String properties with length restrictions ====&lt;br /&gt;
A string property can be configured with a [[MetaProperty#Text_2|length restriction]]. The client property editing UI doesn't allow users to confirm values exceeding the limit.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== [[Editors]] ====&lt;br /&gt;
&lt;br /&gt;
See [[Editors]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
See [[Documents_(Client)|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
See [[Documents_(Client)#Fit_Mode|Fit Mode]]&lt;br /&gt;
&lt;br /&gt;
==== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====&lt;br /&gt;
See [[Documents_(Client)#Auto_zoom|Auto zoom]]&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
See [[Documents_(Client)#Editing|Editing]]&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
See [[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
[[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT_FITMODE]]&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29711</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29711"/>
				<updated>2026-04-20T13:09:26Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Selective List Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Mobile and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Languages ==&lt;br /&gt;
The standard {{UBIK}} client supports multiple languages listed below. {{Version/WinXSince|4.3}}&lt;br /&gt;
* Chinese (Simplified)&lt;br /&gt;
* Czech&lt;br /&gt;
* English&lt;br /&gt;
* German&lt;br /&gt;
* Polish&lt;br /&gt;
* Portuguese&lt;br /&gt;
* Spanish&lt;br /&gt;
{{Attention|As we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows &amp;quot;Preferred languages / Add a language&amp;quot; setting. For example, if you have only English installed when you install {{UBIK}}, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall {{UBIK}}. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.}}&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
==== Saving Indicator ====&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
==== Uncommitted Changes Indicator ====&lt;br /&gt;
{{Version/WinXSince|4.6.0}} When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Version/WinXSince|4.7.0}} Queries are now excluded from uncommitted changes.&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the [[SYSCLS_CHILDINFOOWNER|child info owner classification]], one can additionally show the number of documents and regular grandchildren to be expected for a child object.&lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
=== Properties Page ===&lt;br /&gt;
&lt;br /&gt;
On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
[[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Task|Tasks]] and [[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Work_Package|work packages]] are special types of {{UBIK}} objects used for maintenance, repair and overhaul (MRO) use-cases.&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
Queries are special types of {{UBIK}} objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are [[QUERY|online queries]] evaluated by the server, and [[https://wiki.augmensys.com/index.php?title=Offline_Query_(UBIK_WinX)|offline queries]] evaluated on the client, thus requiring no internet connection.&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
Object classified as [[SYSCLS_SAFETY_RELEVANT_OBJECT|safety relevant]] require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., [[SYSCLS_COMMISSIONINGCHECK|commissioning check tasks]].&lt;br /&gt;
&lt;br /&gt;
==== Locked objects  ====&lt;br /&gt;
In several use-cases, objects can be [[Locked_Objects|locked]] for editing.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Authentication Properties ====&lt;br /&gt;
[[SYSCLS_REQUIRE_AUTHENTICATION|Authentication Properties]] are properties which need a user authentication (through a password field) to be edited.&lt;br /&gt;
&lt;br /&gt;
==== Min max properties ====&lt;br /&gt;
See [[Min_Max_Properties]].&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
[[Live_Values]] are specific property values extracted from a process control system like OPC-UA or OSIPI. &lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properties having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a &amp;quot;selective list&amp;quot; in {{UBIK}}.&lt;br /&gt;
Furthermore, there are [[Dynamic_Selective_List_(Client)|dynamic selective lists]] that can be filtered or assembled based on dependency property values.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Hint|{{Version/WinXSince|5.1.0.0}}{{Version/MobileSince|5.1.0.0}} The ItemsSource binding of related WinX/Mobile controls in Xaml now requires only PropertyViewModel.SelectiveItems, which will return the items of an [[Active_List_Client|ActiveList]]or of MetaProperty.SelectiveList without a SelectiveListToItemsConverter required.}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
==== String properties with length restrictions ====&lt;br /&gt;
A string property can be configured with a [[MetaProperty#Text_2|length restriction]]. The client property editing UI doesn't allow users to confirm values exceeding the limit.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== [[Editors]] ====&lt;br /&gt;
&lt;br /&gt;
See [[Editors]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
See [[Documents_(Client)|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
See [[Documents_(Client)#Fit_Mode|Fit Mode]]&lt;br /&gt;
&lt;br /&gt;
==== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====&lt;br /&gt;
See [[Documents_(Client)#Auto_zoom|Auto zoom]]&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
See [[Documents_(Client)#Editing|Editing]]&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
See [[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
[[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT_FITMODE]]&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29710</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=29710"/>
				<updated>2026-04-20T13:08:40Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Selective List Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Mobile and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Languages ==&lt;br /&gt;
The standard {{UBIK}} client supports multiple languages listed below. {{Version/WinXSince|4.3}}&lt;br /&gt;
* Chinese (Simplified)&lt;br /&gt;
* Czech&lt;br /&gt;
* English&lt;br /&gt;
* German&lt;br /&gt;
* Polish&lt;br /&gt;
* Portuguese&lt;br /&gt;
* Spanish&lt;br /&gt;
{{Attention|As we found out, you can only switch to one of the supported languages if it is installed as a system language in the Windows &amp;quot;Preferred languages / Add a language&amp;quot; setting. For example, if you have only English installed when you install {{UBIK}}, you won't be able to switch to any other languages even if you add those later. In that case, you need to make sure your language of choice is installed in Windows first, then update or reinstall {{UBIK}}. This is a Microsoft Store practice and does not apply to clients installed through sideloading, e.g. from our AppCenter.}}&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
==== Saving Indicator ====&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
==== Uncommitted Changes Indicator ====&lt;br /&gt;
{{Version/WinXSince|4.6.0}} When there are uncommitted changes it is indicated by a button in the Status Bar displaying an icon and the number of uncommitted changes. Pressing this button opens a fly out list with all of the objects that have uncommitted changes to them. Pressing one of those list objects navigates directly to the corresponding object. The Uncommitted Changes Indicator button is only shown when there are uncommitted changes otherwise it is not visible. When in online mode all changes should be committed automatically so the Indicator is mainly useful in Manual or Offline Sync Mode.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Version/WinXSince|4.7.0}} Queries are now excluded from uncommitted changes.&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. With the [[SYSCLS_CHILDINFOOWNER|child info owner classification]], one can additionally show the number of documents and regular grandchildren to be expected for a child object.&lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
=== Properties Page ===&lt;br /&gt;
&lt;br /&gt;
On the properties page, one can see a list of all the current object's visible properties, and, given the respective rights, a possibility to edit them.&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
For any current object, there is a set of potential context-sensitive actions. These are displayed as buttons in the title bar, with a three-dot overflow menu button aggregating all the actions that wouldn't fit there anymore. There are many potential actions; some of them are only enabled for specifically classified objects, like objects with a geo location. Default actions are refresh, various download options, child object creation, copy/paste, commit/revert changes, geo-related actions, etc.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
[[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Task|Tasks]] and [[https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)#Work_Package|work packages]] are special types of {{UBIK}} objects used for maintenance, repair and overhaul (MRO) use-cases.&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
Queries are special types of {{UBIK}} objects with dynamic children. The child objects are looked up depending on the query object's criteria, which can be specified the same as property values for regular objects. There are [[QUERY|online queries]] evaluated by the server, and [[https://wiki.augmensys.com/index.php?title=Offline_Query_(UBIK_WinX)|offline queries]] evaluated on the client, thus requiring no internet connection.&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
Object classified as [[SYSCLS_SAFETY_RELEVANT_OBJECT|safety relevant]] require the user to accept safety instructions to access the object, which can be required for hazardous MRO tasks, for example.&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
Similar to and based on MRO objects, commissioning objects are tasks and work packages for the commissioning use-case, e.g., [[SYSCLS_COMMISSIONINGCHECK|commissioning check tasks]].&lt;br /&gt;
&lt;br /&gt;
==== Locked objects  ====&lt;br /&gt;
In several use-cases, objects can be [[Locked_Objects|locked]] for editing.&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Authentication Properties ====&lt;br /&gt;
[[SYSCLS_REQUIRE_AUTHENTICATION|Authentication Properties]] are properties which need a user authentication (through a password field) to be edited.&lt;br /&gt;
&lt;br /&gt;
==== Min max properties ====&lt;br /&gt;
See [[Min_Max_Properties]].&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
[[Live_Values]] are specific property values extracted from a process control system like OPC-UA or OSIPI. &lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properties having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
For some properties, the user should be able to select from a predefined set of values. Such a predefined set is called a &amp;quot;selective list&amp;quot; in {{UBIK}}.&lt;br /&gt;
Furthermore, there are [[Dynamic_Selective_List_(Client)|dynamic selective lists]] that can be filtered or assembled based on dependency property values.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Hint|{{Version/WinXSince|5.1.0.0}}{{Version/MobileSince|5.1.0.0}} The ItemsSource binding of related WinX/Mobile controls in Xaml now requires only PropertyViewModel.SelectiveItems, which will return the items of an ActiveList or of MetaProperty.SelectiveList without a SelectiveListToItemsConverter required.}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
==== String properties with length restrictions ====&lt;br /&gt;
A string property can be configured with a [[MetaProperty#Text_2|length restriction]]. The client property editing UI doesn't allow users to confirm values exceeding the limit.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== [[Editors]] ====&lt;br /&gt;
&lt;br /&gt;
See [[Editors]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
See [[Documents_(Client)|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
See [[Documents_(Client)#Fit_Mode|Fit Mode]]&lt;br /&gt;
&lt;br /&gt;
==== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====&lt;br /&gt;
See [[Documents_(Client)#Auto_zoom|Auto zoom]]&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
See [[Documents_(Client)#Editing|Editing]]&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
See [[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
[[Documents_(Client)#Offline/Online|Offline/Online]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT_FITMODE]]&lt;br /&gt;
* [[SYSCLS_SHOWDOCUMENTS]]&lt;br /&gt;
* [[SYSCLS_SHOWPROPERTIES]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:How-To|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Active_Lists&amp;diff=29709</id>
		<title>UBIK Active Lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Active_Lists&amp;diff=29709"/>
				<updated>2026-04-20T12:47:22Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Further Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} ActiveLists provide the possibility to configure instance-specific lists for integer MetaProperties.&lt;br /&gt;
&lt;br /&gt;
= Purpose =&lt;br /&gt;
In some cases it is required to define a list of selectable values for an integer MetaProperty that is specific to a single instance rather than globally defined at the MetaClass level. For example, two instances of the same MetaClass can offer different selectable values for the same MetaProperty.&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} ActiveLists are the representation of such lists. They update dynamically on the client side without requiring an ACM rebuild and can be maintained per instance through server methods.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
If a MetaProperty has both a SelectiveList and an ActiveList, the ActiveList takes precedence when data is displayed on the client, and the SelectiveList is ignored.&lt;br /&gt;
&lt;br /&gt;
[[Category:ActiveList|UBIK Active Lists]]&lt;br /&gt;
[[Category:Server|UBIK Active Lists]]&lt;br /&gt;
&lt;br /&gt;
= Client Behavior =&lt;br /&gt;
When the user opens an ActiveList:&lt;br /&gt;
* The label for each option is shown in the language configured on the web service. If a translation for the configured language is unavailable, the label is displayed in the default language.&lt;br /&gt;
* Each option in the ActiveList has an associated unique integer value that is set to the MetaProperty when selected.&lt;br /&gt;
* Only one option can be selected at a time. Selecting an option updates the MetaProperty value immediately.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sorting of items in the dropdown:&lt;br /&gt;
&lt;br /&gt;
* If all options in the ActiveList have unique sort order values, they are displayed in ascending order of these sort order values.&lt;br /&gt;
* If sort orders are not unique, options with the same sort order are sorted in ascending order by their label.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details see: [[Active List Client]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
= Server-Side Concept =&lt;br /&gt;
ActiveLists are stored in serialized JSON form in the '''ACTIVE_LISTS''' property of the instance.&lt;br /&gt;
&lt;br /&gt;
* Each list is associated with exactly one integer MetaProperty of the instance.&lt;br /&gt;
* An instance can have multiple ActiveLists, one for each integer MetaProperty.&lt;br /&gt;
* ActiveLists can be viewed in UBIK.Studio in the Object Explorer under “ActiveLists” for the instance, but they cannot be edited there.&lt;br /&gt;
&lt;br /&gt;
= Managing {{UBIK}} ActiveLists =&lt;br /&gt;
ActiveLists are managed entirely through server methods. The most relevant methods are:&lt;br /&gt;
&lt;br /&gt;
=== AddOrUpdateActiveList(metaProperty, value, labels, sortOrder) ===&lt;br /&gt;
Adds a new list item or updates the labels of an existing one. Optionally repositions the item according to sortOrder.&lt;br /&gt;
&lt;br /&gt;
=== SortActiveList(metaProperty, orderedValues) ===&lt;br /&gt;
Reorders the items of a list according to the specified sequence. Items not included in '''orderedValues''' are appended in their current order.&lt;br /&gt;
&lt;br /&gt;
=== RemoveActiveListItem(metaProperty, value) ===&lt;br /&gt;
Removes a single list item by its integer value.&lt;br /&gt;
&lt;br /&gt;
=== RemoveActiveList(metaProperty) ===&lt;br /&gt;
Removes the entire list for the given MetaProperty.&lt;br /&gt;
&lt;br /&gt;
=== GetActiveLists() ===&lt;br /&gt;
Returns all ActiveLists defined on the instance as '''UbikActiveList''' objects, each containing the MetaProperty name and its list items.&lt;br /&gt;
&lt;br /&gt;
= Who-Bert Example =&lt;br /&gt;
The following Who-Bert snippet demonstrates how to work with an ActiveList for a MetaProperty named &amp;quot;'''MP_INT_A'''&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using UBIK.Kernel;&lt;br /&gt;
using UBIK.Runtime;&lt;br /&gt;
using UBIK.Runtime.Sys;&lt;br /&gt;
using UBIK.Compiler;&lt;br /&gt;
using UBIK.Content;&lt;br /&gt;
&lt;br /&gt;
namespace Studio&lt;br /&gt;
{&lt;br /&gt;
    public class ObjectTest&lt;br /&gt;
    {&lt;br /&gt;
        public void TestObject(params BaseClass[] InVariables)&lt;br /&gt;
        {&lt;br /&gt;
            Debugger.Output(this, &amp;quot;*** Started ActiveList Example&amp;quot;);&lt;br /&gt;
            foreach (BaseClass obj in InVariables)&lt;br /&gt;
            {&lt;br /&gt;
                ContentClass c = obj as ContentClass;&lt;br /&gt;
&lt;br /&gt;
                var labels1 = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;One&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Eins&amp;quot; } };&lt;br /&gt;
                var labels2 = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;Two&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Zwei&amp;quot; } };&lt;br /&gt;
                var labels3 = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;Three&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Drei&amp;quot; } };&lt;br /&gt;
&lt;br /&gt;
                // Add items&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 1, labels1);&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 2, labels2);&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 3, labels3);&lt;br /&gt;
&lt;br /&gt;
                // Update labels and move item 3 to index 0&lt;br /&gt;
                var labels3Updated = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;Three Updated&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Drei Aktualisiert&amp;quot; } };&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 3, labels3Updated, 0);&lt;br /&gt;
&lt;br /&gt;
                // Sort items: 2, 1, 3&lt;br /&gt;
                c.SortActiveList(&amp;quot;MP_INT_A&amp;quot;, new int[] { 2, 1, 3 });&lt;br /&gt;
&lt;br /&gt;
                // Remove item 1&lt;br /&gt;
                c.RemoveActiveListItem(&amp;quot;MP_INT_A&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
                c.Save();&lt;br /&gt;
            }&lt;br /&gt;
            Debugger.Output(this, &amp;quot;*** Finished ActiveList Example&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Further Notes =&lt;br /&gt;
&lt;br /&gt;
* ActiveLists are designed for lightweight, instance-specific value lists that can be updated without ACM rebuilds.&lt;br /&gt;
* They are ideal for use cases where list content varies between instances of the same MetaClass.&lt;br /&gt;
* When both an ActiveList and a SelectiveList are defined for the same MetaProperty, the ActiveList overrides the SelectiveList on the client.&lt;br /&gt;
&lt;br /&gt;
[[Category:ActiveList|UBIK Active Lists]]&lt;br /&gt;
[[Category:Server|UBIK Active Lists]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=UBIK_Active_Lists&amp;diff=29708</id>
		<title>UBIK Active Lists</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=UBIK_Active_Lists&amp;diff=29708"/>
				<updated>2026-04-20T12:44:49Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Purpose */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} ActiveLists provide the possibility to configure instance-specific lists for integer MetaProperties.&lt;br /&gt;
&lt;br /&gt;
= Purpose =&lt;br /&gt;
In some cases it is required to define a list of selectable values for an integer MetaProperty that is specific to a single instance rather than globally defined at the MetaClass level. For example, two instances of the same MetaClass can offer different selectable values for the same MetaProperty.&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} ActiveLists are the representation of such lists. They update dynamically on the client side without requiring an ACM rebuild and can be maintained per instance through server methods.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
If a MetaProperty has both a SelectiveList and an ActiveList, the ActiveList takes precedence when data is displayed on the client, and the SelectiveList is ignored.&lt;br /&gt;
&lt;br /&gt;
[[Category:ActiveList|UBIK Active Lists]]&lt;br /&gt;
[[Category:Server|UBIK Active Lists]]&lt;br /&gt;
&lt;br /&gt;
= Client Behavior =&lt;br /&gt;
When the user opens an ActiveList:&lt;br /&gt;
* The label for each option is shown in the language configured on the web service. If a translation for the configured language is unavailable, the label is displayed in the default language.&lt;br /&gt;
* Each option in the ActiveList has an associated unique integer value that is set to the MetaProperty when selected.&lt;br /&gt;
* Only one option can be selected at a time. Selecting an option updates the MetaProperty value immediately.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sorting of items in the dropdown:&lt;br /&gt;
&lt;br /&gt;
* If all options in the ActiveList have unique sort order values, they are displayed in ascending order of these sort order values.&lt;br /&gt;
* If sort orders are not unique, options with the same sort order are sorted in ascending order by their label.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details see: [[Active List Client]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
= Server-Side Concept =&lt;br /&gt;
ActiveLists are stored in serialized JSON form in the '''ACTIVE_LISTS''' property of the instance.&lt;br /&gt;
&lt;br /&gt;
* Each list is associated with exactly one integer MetaProperty of the instance.&lt;br /&gt;
* An instance can have multiple ActiveLists, one for each integer MetaProperty.&lt;br /&gt;
* ActiveLists can be viewed in UBIK.Studio in the Object Explorer under “ActiveLists” for the instance, but they cannot be edited there.&lt;br /&gt;
&lt;br /&gt;
= Managing {{UBIK}} ActiveLists =&lt;br /&gt;
ActiveLists are managed entirely through server methods. The most relevant methods are:&lt;br /&gt;
&lt;br /&gt;
=== AddOrUpdateActiveList(metaProperty, value, labels, sortOrder) ===&lt;br /&gt;
Adds a new list item or updates the labels of an existing one. Optionally repositions the item according to sortOrder.&lt;br /&gt;
&lt;br /&gt;
=== SortActiveList(metaProperty, orderedValues) ===&lt;br /&gt;
Reorders the items of a list according to the specified sequence. Items not included in '''orderedValues''' are appended in their current order.&lt;br /&gt;
&lt;br /&gt;
=== RemoveActiveListItem(metaProperty, value) ===&lt;br /&gt;
Removes a single list item by its integer value.&lt;br /&gt;
&lt;br /&gt;
=== RemoveActiveList(metaProperty) ===&lt;br /&gt;
Removes the entire list for the given MetaProperty.&lt;br /&gt;
&lt;br /&gt;
=== GetActiveLists() ===&lt;br /&gt;
Returns all ActiveLists defined on the instance as '''UbikActiveList''' objects, each containing the MetaProperty name and its list items.&lt;br /&gt;
&lt;br /&gt;
= Who-Bert Example =&lt;br /&gt;
The following Who-Bert snippet demonstrates how to work with an ActiveList for a MetaProperty named &amp;quot;'''MP_INT_A'''&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using UBIK.Kernel;&lt;br /&gt;
using UBIK.Runtime;&lt;br /&gt;
using UBIK.Runtime.Sys;&lt;br /&gt;
using UBIK.Compiler;&lt;br /&gt;
using UBIK.Content;&lt;br /&gt;
&lt;br /&gt;
namespace Studio&lt;br /&gt;
{&lt;br /&gt;
    public class ObjectTest&lt;br /&gt;
    {&lt;br /&gt;
        public void TestObject(params BaseClass[] InVariables)&lt;br /&gt;
        {&lt;br /&gt;
            Debugger.Output(this, &amp;quot;*** Started ActiveList Example&amp;quot;);&lt;br /&gt;
            foreach (BaseClass obj in InVariables)&lt;br /&gt;
            {&lt;br /&gt;
                ContentClass c = obj as ContentClass;&lt;br /&gt;
&lt;br /&gt;
                var labels1 = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;One&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Eins&amp;quot; } };&lt;br /&gt;
                var labels2 = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;Two&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Zwei&amp;quot; } };&lt;br /&gt;
                var labels3 = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;Three&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Drei&amp;quot; } };&lt;br /&gt;
&lt;br /&gt;
                // Add items&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 1, labels1);&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 2, labels2);&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 3, labels3);&lt;br /&gt;
&lt;br /&gt;
                // Update labels and move item 3 to index 0&lt;br /&gt;
                var labels3Updated = new Dictionary&amp;lt;string, string&amp;gt; { { &amp;quot;en&amp;quot;, &amp;quot;Three Updated&amp;quot; }, { &amp;quot;de&amp;quot;, &amp;quot;Drei Aktualisiert&amp;quot; } };&lt;br /&gt;
                c.AddOrUpdateActiveList(&amp;quot;MP_INT_A&amp;quot;, 3, labels3Updated, 0);&lt;br /&gt;
&lt;br /&gt;
                // Sort items: 2, 1, 3&lt;br /&gt;
                c.SortActiveList(&amp;quot;MP_INT_A&amp;quot;, new int[] { 2, 1, 3 });&lt;br /&gt;
&lt;br /&gt;
                // Remove item 1&lt;br /&gt;
                c.RemoveActiveListItem(&amp;quot;MP_INT_A&amp;quot;, 1);&lt;br /&gt;
&lt;br /&gt;
                c.Save();&lt;br /&gt;
            }&lt;br /&gt;
            Debugger.Output(this, &amp;quot;*** Finished ActiveList Example&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
} &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Further Notes =&lt;br /&gt;
&lt;br /&gt;
* ActiveLists are designed for lightweight, instance-specific value lists that can be updated without ACM rebuilds.&lt;br /&gt;
* They are ideal for use cases where list content varies between instances of the same MetaClass.&lt;br /&gt;
* When both an ActiveList and a SelectiveList are defined for the same MetaProperty, the SelectiveList overrides the ActiveList on the client.&lt;br /&gt;
&lt;br /&gt;
[[Category:ActiveList|UBIK Active Lists]]&lt;br /&gt;
[[Category:Server|UBIK Active Lists]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29707</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29707"/>
				<updated>2026-04-20T10:01:32Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
[[Multi_Select_%28UBIK_Client%29#Editing_common_properties_of_selected_items_.28UWP_only.29|Mass editing]] is currently not supported for Properties containing Active Lists.&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)&amp;diff=29706</id>
		<title>MRO Objects (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)&amp;diff=29706"/>
				<updated>2026-04-20T09:54:49Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:MRO_WinX.png|thumb|alt=MRO Child List UI (WinX)|MRO UI (WinX)]]&lt;br /&gt;
[[File:MRO_MAUI1.jpeg|thumb|alt=MRO Child List UI (Android)|MRO UI (Android)]]&lt;br /&gt;
The WinX client UI displays MRO configured objects like any other root- or child-object enriched by some additional logic and features.&lt;br /&gt;
&lt;br /&gt;
== Basic User Interface ==&lt;br /&gt;
The representation of MRO features comprises some indicators and interactive controls. In the {{UBIK}} child list, the main object displays cumulated technical and organisational status as well as the overall work progress based on the underlying data branch. Objects classified as MRO objects in general provide indicators for the MRO status. This means the status is shown next to the main icon of a child-/details-/documents-page as well as next to the icons of the child list items:&lt;br /&gt;
&lt;br /&gt;
=== Technical Status ===&lt;br /&gt;
&lt;br /&gt;
The technical status indicator is shown on all objects that represent a technical state or receive the technical status from subsequent objects in the underlying data branch. If e.g. a inventory object is reported as damaged, its parent objects will all display the exclamation mark symbol to indicate that a problem was reported in the child items.&lt;br /&gt;
&lt;br /&gt;
[[File:TechStats_WinX.png|100px|Technical Status Indicator (Winx &amp;amp; Mobile)]]&lt;br /&gt;
&lt;br /&gt;
=== Organisational Status ===&lt;br /&gt;
The organisational status indicates the amount of confirmed work within the data branch, including already confirmed work packages as well as tasks that are locked by their owning work package. The organisational status indicator is displayed on all objects that represent an organisational state or receive the organisational status from subsequent objects in the underlying data branch, and visualizes the amount of confirmed work performed within that branch.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:UI_WinX_MRO_OrganisationalStatusIndicator.png|Organisational Status Indicator (WinX)&lt;br /&gt;
File:ConfirmedWP_WinX.png|MRO Workpackage Confirmed (Flag) Indicator (WinX)&lt;br /&gt;
File:Android_orga_status.PNG|Organisational Status Indicator (Android)&lt;br /&gt;
File:ConfirmedWP_MAUI.jpeg|MRO Workpackage Confirmed Indicator (Mobile)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Work Progress ===&lt;br /&gt;
The work progress is calculated from the current work progress and from the progress cumulated from subsequent objects in the underlying data branch. This indicator shows the amount of work done in the data branch.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|5.0}} {{Version/MobileSince|5.0}} By default, the progress is displayed with maximum one decimal place. For example, 99.75% is displayed as 99.8%. The format string used to achieve this is &amp;lt;code&amp;gt;{0:0.#}%&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If other numeric formats are preferred in your usecases, you can refer to [https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings custom numeric format strings] for more information. The template to customize for this is the UBIKMROProgressBadge within UBIKThemes.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MRO Objects ==&lt;br /&gt;
A set of specific objects can be used to provide the required structure for MRO:&lt;br /&gt;
&lt;br /&gt;
=== Task Owner ===&lt;br /&gt;
A [[MROCLS_MRO_TASKOWNER|Task Owner]] is an object having a substructure of jobs to be done. It can have a tree of other task owners or work packages underneath that will update the status of the task owner. This status consists of technical, organisational and progress information. With a task owner a user can get an overview of all the work to be done in the underlying job structure.&lt;br /&gt;
&lt;br /&gt;
=== Work Package===&lt;br /&gt;
A [[MROCLS_MRO_WORKPACKAGE|Work Package]] is a collection of objects to collect and summarize other task owning objects, workpackages, or tasks. A simple workpackage has a certain amount of tasks that have to be finished in order to confirm the workpackage as done. More complex workpackages can also own other underlying workpackages that have to be confirmed.  Confirming a workpackage itself requires a progress of 100% of all related tasks, as well as 100% confirmed sub work packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:ConfirmingWP_WinX.png|MRO Workpackage confirm button (WinX)&lt;br /&gt;
File:MRORevoke_WinX.png|MRO Workpackage revoke confirmation button (WinX)&lt;br /&gt;
File:ConfirmingWP_MAUI.jpeg|MRO Workpackage confirm button (Android)&lt;br /&gt;
File:MRORevoke_MAUI.jpeg|MRO Workpackage revoke confirmation button (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task ===&lt;br /&gt;
A [[MROCLS_MRO_TASK|Task]] is an object reporting a certain progress to the owning workpackage. There are several specialized types of task objects. All kinds of tasks have a property called '''VALUE''' in common. It is very important, that this property is able to be validated. Therefore, a MetaAttribute (providing a validation timestamp by default) has to be attached on the used MetaProperty.&lt;br /&gt;
&lt;br /&gt;
On both clients, a Task can be reverted by clicking twice on the Not Applicable button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|The MetaProperty ''VALUE'' has to use [[Attributes]] in order to be validated. Otherwise, the calculation of work progress will not be possible.}}&lt;br /&gt;
&lt;br /&gt;
==== Measurement Task ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_MRO_MEASUREMENT_TASK|Measurement Task]] inherits from [[MROCLS_MRO_TASK|Task]] and documents a measured value (e.g. read from a pressure gauge). Therefore, clicking the value on the shown task opens an editor to enter the desired value. If no value was entered before, an empty line will be shown. Once a value has been entered, the task is finished. Alternatively, the task can also be closed by the option ''Not Applicable'' to document the situation of not being able to fullfill the measurement (e.g. the pressure gauge is broken). An additional small value indicator below the main value can report e.g. the previously entered value. The behaviour of this previous value indicator has to be specified separately in the customizing.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Measurment Task Empty UWP.png|Measurement Task without a reported value (WinX)&lt;br /&gt;
File:Measurment Task Not Empty UWP.png|Measurement Task with a reported value (WinX)&lt;br /&gt;
File:Measurment Task Empty Android.jpg|Measurement Task without a reported value (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Progress Task ====&lt;br /&gt;
&lt;br /&gt;
[[MROCLS_MRO_PROGRESS_TASK| Progress Task]] inherits from [[MROCLS_MRO_MEASUREMENT_TASK|Task]] and reports a certain progress while fullfilling a task. The progress will influence the overall progress of the owning workpackage. If the task cannot be fullfilled, it can also be finished with the option ''Not Applicable''.&lt;br /&gt;
&lt;br /&gt;
There is also an [[MRO_PROGRESS_TASK_EDITOR|alternative editor]] available for progress tasks.{{Version/WinXSince|2.5.4}}&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Progress Task UWP.png|Progress Task with a reported work progress (WinX)&lt;br /&gt;
File:Progress Task Android.jpg|Progress Task with a reported work progress and a previous progress(Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Check Task ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_MRO_CHECK_TASK|Check Task]] inherits from [[MROCLS_MRO_TASK|Task]] and is finished by reporting ''Done'' or ''Not Applicable''. This is intended for a simple To-Do task that is either done or not.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Check Task finished UWP.png|Unfinished MRO CheckTask (WinX)&lt;br /&gt;
File:Check Task android.jpg|Not Applicable MRO CheckTask (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Inspection Task ====&lt;br /&gt;
&lt;br /&gt;
[[MROCLS_MRO_INSPECTION_TASK|Inspection Task]] inherits from [[MROCLS_MRO_TASK|Task]] and is finished, when the user reports with a positive or negative answer or ''Not Applicable'' (e.g. reporting a yes/no answer for existing equipment).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Finished Inspection Task UWP.png|Finished MRO InspectionTask (WinX)&lt;br /&gt;
File:Inspection task android.jpg|Finished MRO InspectionTask (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Sequential Task ====&lt;br /&gt;
The [[MROCLS_SEQUENTIALTASK|sequential task classification]] allows you to pre-define a sequence in which tasks are to be resolved by users. This means that it is required for one or multiple tasks to be finished in order for other tasks to become &amp;quot;unlocked&amp;quot; and editable. A task can have any number of &amp;quot;predecessors&amp;quot;. Predecessors are the tasks that are required to be finished first.&lt;br /&gt;
&lt;br /&gt;
A task can have predecessors that live anywhere else in the object hierarchy. It is not necessary for a task and its predecessors to be part of the same work package, even though this is likely the most common use case.&lt;br /&gt;
&lt;br /&gt;
The state of a sequential task is evaluated both offline and online to get the best possible user experience. The user will see dependent tasks update immediately if their successors were finished, if those tasks are currently visible in the UI. There is 1 case in which the server-side state will override the client-side (offline) evaluation, discussed below.&lt;br /&gt;
The state of each sequential task is evaluated the following way:&lt;br /&gt;
&lt;br /&gt;
# If the server-side state says the task is open, we consider this as the truthful state and don't do any other evaluation.&lt;br /&gt;
# Check if the task has any predecessors.&lt;br /&gt;
# Try to load each predecessor task.&lt;br /&gt;
#* If loading of any predecessor fails (the object is not available offline), the task will be locked.&lt;br /&gt;
# If all predecessor tasks are finished, the task is open and can be edited. Otherwise, the task is locked.&lt;br /&gt;
&lt;br /&gt;
The customizer setting up the task dependency relations needs to ensure that the dependencies are not cyclical. In this case, it would be impossible for any tasks in the &amp;quot;cycle&amp;quot; to be finished.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
As a demonstration of this feature, see [[Media:Sequential_tasks_winx.mp4|this video]]. The relations between tasks are defined as in [[Media:Task_relations.png|this image]], starting at A1 and A2, which are not dependent on any other tasks. The lines (from left to right) indicate dependencies. This means that B2 has tasks A1 and A2 as its predecessors, for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Grouped Task {{Version/WinXSince|4.2}}{{Version/XamarinSince|4.2}} ====&lt;br /&gt;
Sometimes, not all tasks have to be finished. More specifically, there might be a predefined condition where you only need to finish a certain number of tasks among a group of them. These are known in {{UBIK}} as [[MROCLS_GROUPEDTASK|grouped tasks]].&lt;br /&gt;
&lt;br /&gt;
The idea is, a group of tasks can be defined as siblings to each other and they also share the same server configured threshold. When the number of finished tasks among that group exceeds the threshold, the entire group is considered as no longer necessary. When reflected in the overall status of the task owner(s), these tasks would appear as if they are finished.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Technically speaking, the finished status is completely independent from the not necessary status on a task. A grouped task which is no longer necessary can be both finished or not yet finished. In other words, users don't have to finish a not necessary grouped task, but they still can.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|The precise status calculation for grouped tasks and their task owners requires the knowledge of all siblings tasks. Imagine 2 out of 3 tasks must be finished but the client only knows 1 in total and the others are only available at the server at that time. This makes it impossible to draw conclusions whether the task(s) should be necessary or not. Under such circumstances, the local status calculation is done as if these are just regular tasks.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Like with the other MRO objects, the client always chooses the best available statuses for grouped tasks to present to the users. More specifically, it uses the statuses calculated by the server when the client is not offline and there are no uncommitted local changes on the involved objects. Otherwise, it uses the statuses calculated locally to the best of its knowledge.}}&lt;br /&gt;
&lt;br /&gt;
A task can also be a grouped and a sequential one at the same time. In such a case, the grouped nature of the sibling tasks will affect the way the task sequence completes.&lt;br /&gt;
&lt;br /&gt;
For example, task A1, A2 and A3 are 3 grouped sibling tasks and only 1 of them needs to be finished. At the same time, they are all predecessors of task B. Normally, all predecessors must be finished (and locked) before task B becomes the next one in the sequence and therefore unlocked. In this case, however, as soon as one of the predecessors is finished, all three become unnecessary (and locked) and task B unlocks as a result of that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Supervisor Task {{Version/XamarinSince|4.8}} ====&lt;br /&gt;
As the name suggests, supervisor tasks are those that must be finished under supervision. When users want to finish a [[MROCLS_MRO_SUPERVISOR_TASK|supervisor task]], they must hand over their work devices to a supervisor. The latter checks the work status and scans an NFC tag if the work is approved. If the [[MROCLS_MRO_SUPERVISOR|supervisor]] has sufficient permissions for the task and the correct supervisor PIN is given, the task gets unlocked and the users can proceed to finish it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:UI_Xamarin_Supervisor_Task_Before_Verification.jpg|Supervisor Task Before Verification/Unlocking (Mobile)&lt;br /&gt;
File:UI_Xamarin_Supervisor_Task_Enter_PIN.jpg|Supervisor Task Enter PIN (Mobile)&lt;br /&gt;
File:UI_Xamarin_Supervisor_Task_After_Verification.jpg|Supervisor Task After Verification/Unlocking (Mobile)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A thing to note is that while the need to verify a supervisor task can be seen as a type of locking, it's certainly not the only reason for a [[Locked_Objects|locked object]]. This means a supervisor task can remain locked (although for different reasons) even after a supervisor has successfully verified it. This can often be the case if you use it in combination with other features such as [[MRO_Objects_(Client)#Sequential_Task|sequential tasks]], [[User_Rights|user rights]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|For security reasons, the verification process is cancelled if the supervisor enters the wrong PIN for three times. Scanning the tag again is required in that case.}}&lt;br /&gt;
{{Hint|A setting controls [[RFID_tags#Choose_which_information_to_use_from_a_tag|which information in a scanned tag is used]] during this process.}}&lt;br /&gt;
&lt;br /&gt;
==== Signature Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
The Signature Task is a task type that is completed by capturing a handwritten signature from the user. The task contains an editor field that serves as the entry point for the signing process. When the user clicks (or taps) on the editor field, a signature dialog opens. Within this dialog, the user can provide their signature. After confirming the input, the signature is saved and the task is automatically marked as completed.&lt;br /&gt;
&lt;br /&gt;
If the task is signed while the client is online:&lt;br /&gt;
* The User (signee) is resolved immediately by the server and displayed.&lt;br /&gt;
* The ValidationTimestamp is generated and displayed.&lt;br /&gt;
* Both values are shown directly in the editor field after signing.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The User only gets resolved by the server and displayed once you're in online mode}}&lt;br /&gt;
&lt;br /&gt;
If the displayed User and/or ValidationTimestamp cannot be fully shown due to limited space in the editor field, the complete information can be accessed via a tooltip.&lt;br /&gt;
&lt;br /&gt;
* In '''UBIK WinX (UWP)''', hover over the editor field with the mouse.&lt;br /&gt;
* In '''UBIK Mobile''', perform a long press on the editor field.&lt;br /&gt;
A tooltip will appear, displaying the full User and ValidationTimestamp without truncation.&lt;br /&gt;
&lt;br /&gt;
==== Picture Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_PICTURE_TASK|picture task]] is a check task which can only be finished when it has at least one child document containing a valid file. In the UI, an additional photo button is presented next to the check so users can easily take photos before finishing the tasks.&lt;br /&gt;
* As any other objects, picture tasks can carry and display [[SYSCLS_CHILDINFOOWNER|child count information]]. But that is not a mandatory part of the feature. Even when it's not configured and not visible in the UI, you can still finish the tasks.&lt;br /&gt;
* In WinX/UWP, the UI also presents an expander which allows you to display the child documents of picture tasks. This is not present by default in the Mobile app due to the screen size limit but [[Object_hierarchy_in_XAML:_NextLevel,_ParentLevel,_LinkedLevel#Show_NextLevel_Children.2FDocuments|can be easily customized]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|The task is named as such because pictures are the most commonly used types, but the child documents can be of other types as well. }}&lt;br /&gt;
&lt;br /&gt;
When a user tries to finish a picture task by tapping the check, the app might perform some data synchronization first if in online mode, which includes&lt;br /&gt;
* Syncing the child objects (including documents) of the task.&lt;br /&gt;
* Downloading the file(s) of the child documents.&lt;br /&gt;
During data synchronization, the check button on that task turns into a wait indicator. Afterwards, the app checks if the prerequisites to finish the task are met.&lt;br /&gt;
* If there are no child documents or no local files for the child documents, the task remains unfinished and the user gets informed about the reasons.&lt;br /&gt;
* Otherwise, the task gets finished and the photo button gets disabled.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Setting NA (not applicable) on a picture task is always possible, regardless of the condition of child documents.}}&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
==== Numeric Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_MRO_NUMERIC_TASK|numeric task]] is a task which records a double value (e.g. from a temperature sensor). Entering the value (including Not Applicable) completes the task.&lt;br /&gt;
* The value is compared against an accaptable value range which is not editable on the client.&lt;br /&gt;
* Deviation from this range results in visual feedback as well as the [[#Tech Status|tech status]] being set to display an issue.&lt;br /&gt;
* If the configured value range is invalid (e.g. min &amp;gt; max) and the user enters a value, the [[#Tech Status|tech status]] will also be set to display an issue.&lt;br /&gt;
* A numeric task also has a special value unit that can be set per task instance. If set, it overrides the standard value unit defined on the [[MetaProperty#Unit_Item|MetaProperty]].&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
==== Pick List Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_PICK_LIST_TASK|Pick List task]] looks and behaves the same like a standard Integer Task with SelectiveList. Other than the standard Integer Task, the Pick List Task has an [[UBIK_Active_Lists|Active List]] defined on instance level to pick from for its value property. The task counts as finished as soon as a list item has been selected, or when pressing ''Not Applicable''.&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|MRO Objects (UBIK WinX)]]&lt;br /&gt;
[[Category:Client|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Mobile|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|MRO Objects (Client)]]&lt;br /&gt;
[[Category:WinX|MRO Objects (UBIK WinX)]]&lt;br /&gt;
&lt;br /&gt;
=== MRO objects with project information (WinX only) {{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:UI_WinX_MRO_ProjectInfo.png|thumb|MRO Object with Project Info (WinX)]]&lt;br /&gt;
An MRO object (except tasks) might also bring along [[MROCLS_PROJECTINFORMATION|project information]]. In this case, the project information together with the MRO progress are displayed in a bar chart. The start &amp;amp; end dates of the MRO object are displayed on the progress bar. The length and the position of the progress bar, together with the current date mark indicate the timeline.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locking ==&lt;br /&gt;
When an (MRO) object is locked, editing it becomes impossible. More details about [[Locked_Objects|locked objects]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MRO (Plugin)]]&lt;br /&gt;
* [[MROCLS_PROJECT]]&lt;br /&gt;
* [[MROCLS_PROJECTINFORMATION]]&lt;br /&gt;
* [[MROCLS_SEQUENTIALTASK]]&lt;br /&gt;
* [[MROCLS_GROUPEDTASK]]&lt;br /&gt;
* [[MROCLS_MRO_CHECK_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_INSPECTION_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_MEASUREMENT_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_PROGRESS_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_TASKOWNER]]&lt;br /&gt;
* [[MROCLS_MRO_WORKPACKAGE]]&lt;br /&gt;
* [[MROCLS_PROCEDURE#Procedure Workpackage]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_TASK#Switch Task]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_END_TASK#Switch End Task]] (Classification)&lt;br /&gt;
* [[MROCLS_CALCULATION_TASK#Calculation Task]] (Classification)&lt;br /&gt;
* [[MROCLS_PICK_LIST_TASK]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|MRO Objects (UBIK WinX)]]&lt;br /&gt;
[[Category:Client|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Mobile|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|MRO Objects (Client)]]&lt;br /&gt;
[[Category:WinX|MRO Objects (UBIK WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Category:Active_List&amp;diff=29705</id>
		<title>Category:Active List</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Category:Active_List&amp;diff=29705"/>
				<updated>2026-04-20T09:52:53Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29704</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29704"/>
				<updated>2026-04-20T09:52:11Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29703</id>
		<title>Active List Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Active_List_Client&amp;diff=29703"/>
				<updated>2026-04-20T09:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
==Introduction {{Version/WinXSince|5.1.0.0}} {{Version/MobileSince|5.1.0.0}}==&lt;br /&gt;
If an Active List is defined on a [[Instance|Content Object]] that is associated with an [[MetaProperty#Integer|integer]] [[MetaProperty]], the property is displayed like a usual [[UBIK WinX Client Basics#Selective List Properties|SelectiveList]] which is based on a [[MetaProperty]]. An ActiveList (i.e., if it has been configured on the server for a content object) always takes precedence over a MetaProperty SelectiveList. For editing, it behaves exactly the same as with a standard [[SELECTIVELIST|SelectiveList]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|There are no visible differences in the UI between an ActiveList and a MetaProperty SelectiveList.}}&lt;br /&gt;
&lt;br /&gt;
=== XAML ===&lt;br /&gt;
A new SelectiveItems property was added to the PropertyViewModel to enable access to an ActiveList via XAML. No DataTriggers or additional checks are required, as the correct list selection is handled automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile (MAUI)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;clr-namespace:UBIK.MAUI.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:SfListViewExt&lt;br /&gt;
    x:Name=&amp;quot;SelectiveList&amp;quot;&lt;br /&gt;
    BindingContext=&amp;quot;{TemplateBinding BindingContext}&amp;quot;&lt;br /&gt;
    ItemSize=&amp;quot;40&amp;quot;&lt;br /&gt;
    ItemTemplate=&amp;quot;{StaticResource PopupSelectiveListItemTemplate}&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding SelectiveItems}&amp;quot;&lt;br /&gt;
    SelectedItem=&amp;quot;{Binding ValueItem.PropertyValue, Mode=OneWay, Converter={StaticResource PropertyValueToSelectiveItem}, ConverterParameter={Binding Source={x:Reference SelectiveList}, Path=ItemsSource}}&amp;quot;&lt;br /&gt;
    SelectionBackground=&amp;quot;{DynamicResource UBIKAccentColor}&amp;quot;&lt;br /&gt;
    SelectionMode=&amp;quot;Single&amp;quot;&lt;br /&gt;
    Style=&amp;quot;{DynamicResource UBIKListView}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;controls:ComboBoxExt&lt;br /&gt;
    x:Name=&amp;quot;ComboBox&amp;quot;&lt;br /&gt;
    Grid.ColumnSpan=&amp;quot;2&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
    DisplayMemberPath=&amp;quot;DisplayText&amp;quot;&lt;br /&gt;
    ItemsSource=&amp;quot;{Binding PropertyViewModel.SelectiveItems}&amp;quot;&lt;br /&gt;
    PlaceholderText=&amp;quot;{Binding PropertyEdit_PickerPlaceholder, Source={StaticResource AppResources}}&amp;quot;&lt;br /&gt;
    SelectedValue=&amp;quot;{Binding PropertyValue, Mode=TwoWay}&amp;quot;&lt;br /&gt;
    SelectedValuePath=&amp;quot;Value&amp;quot;&lt;br /&gt;
    Visibility=&amp;quot;{Binding PropertyViewModel.ShowComboBox, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[UBIK Active Lists|Active Lists Server]]&lt;br /&gt;
* [[MROCLS PICK LIST TASK|Pick List Task]]&lt;br /&gt;
* [[MRO_Objects_(Client)#Pick_List_Task|MRO Objects (Client) Pick List Task]]&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:ActiveList|Active List Client]]&lt;br /&gt;
[[Category:Active List|Active List Client]]&lt;br /&gt;
[[Category:Client|Active List Client]]&lt;br /&gt;
[[Category:Mobile|Active List Client]]&lt;br /&gt;
[[Category:Version 5.1|Active List Client]]&lt;br /&gt;
[[Category:WinX|Active List Client]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)&amp;diff=29702</id>
		<title>MRO Objects (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=MRO_Objects_(Client)&amp;diff=29702"/>
				<updated>2026-04-20T09:32:15Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Task */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:MRO_WinX.png|thumb|alt=MRO Child List UI (WinX)|MRO UI (WinX)]]&lt;br /&gt;
[[File:MRO_MAUI1.jpeg|thumb|alt=MRO Child List UI (Android)|MRO UI (Android)]]&lt;br /&gt;
The WinX client UI displays MRO configured objects like any other root- or child-object enriched by some additional logic and features.&lt;br /&gt;
&lt;br /&gt;
== Basic User Interface ==&lt;br /&gt;
The representation of MRO features comprises some indicators and interactive controls. In the {{UBIK}} child list, the main object displays cumulated technical and organisational status as well as the overall work progress based on the underlying data branch. Objects classified as MRO objects in general provide indicators for the MRO status. This means the status is shown next to the main icon of a child-/details-/documents-page as well as next to the icons of the child list items:&lt;br /&gt;
&lt;br /&gt;
=== Technical Status ===&lt;br /&gt;
&lt;br /&gt;
The technical status indicator is shown on all objects that represent a technical state or receive the technical status from subsequent objects in the underlying data branch. If e.g. a inventory object is reported as damaged, its parent objects will all display the exclamation mark symbol to indicate that a problem was reported in the child items.&lt;br /&gt;
&lt;br /&gt;
[[File:TechStats_WinX.png|100px|Technical Status Indicator (Winx &amp;amp; Mobile)]]&lt;br /&gt;
&lt;br /&gt;
=== Organisational Status ===&lt;br /&gt;
The organisational status indicates the amount of confirmed work within the data branch, including already confirmed work packages as well as tasks that are locked by their owning work package. The organisational status indicator is displayed on all objects that represent an organisational state or receive the organisational status from subsequent objects in the underlying data branch, and visualizes the amount of confirmed work performed within that branch.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:UI_WinX_MRO_OrganisationalStatusIndicator.png|Organisational Status Indicator (WinX)&lt;br /&gt;
File:ConfirmedWP_WinX.png|MRO Workpackage Confirmed (Flag) Indicator (WinX)&lt;br /&gt;
File:Android_orga_status.PNG|Organisational Status Indicator (Android)&lt;br /&gt;
File:ConfirmedWP_MAUI.jpeg|MRO Workpackage Confirmed Indicator (Mobile)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Work Progress ===&lt;br /&gt;
The work progress is calculated from the current work progress and from the progress cumulated from subsequent objects in the underlying data branch. This indicator shows the amount of work done in the data branch.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|5.0}} {{Version/MobileSince|5.0}} By default, the progress is displayed with maximum one decimal place. For example, 99.75% is displayed as 99.8%. The format string used to achieve this is &amp;lt;code&amp;gt;{0:0.#}%&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If other numeric formats are preferred in your usecases, you can refer to [https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings custom numeric format strings] for more information. The template to customize for this is the UBIKMROProgressBadge within UBIKThemes.&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MRO Objects ==&lt;br /&gt;
A set of specific objects can be used to provide the required structure for MRO:&lt;br /&gt;
&lt;br /&gt;
=== Task Owner ===&lt;br /&gt;
A [[MROCLS_MRO_TASKOWNER|Task Owner]] is an object having a substructure of jobs to be done. It can have a tree of other task owners or work packages underneath that will update the status of the task owner. This status consists of technical, organisational and progress information. With a task owner a user can get an overview of all the work to be done in the underlying job structure.&lt;br /&gt;
&lt;br /&gt;
=== Work Package===&lt;br /&gt;
A [[MROCLS_MRO_WORKPACKAGE|Work Package]] is a collection of objects to collect and summarize other task owning objects, workpackages, or tasks. A simple workpackage has a certain amount of tasks that have to be finished in order to confirm the workpackage as done. More complex workpackages can also own other underlying workpackages that have to be confirmed.  Confirming a workpackage itself requires a progress of 100% of all related tasks, as well as 100% confirmed sub work packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:ConfirmingWP_WinX.png|MRO Workpackage confirm button (WinX)&lt;br /&gt;
File:MRORevoke_WinX.png|MRO Workpackage revoke confirmation button (WinX)&lt;br /&gt;
File:ConfirmingWP_MAUI.jpeg|MRO Workpackage confirm button (Android)&lt;br /&gt;
File:MRORevoke_MAUI.jpeg|MRO Workpackage revoke confirmation button (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task ===&lt;br /&gt;
A [[MROCLS_MRO_TASK|Task]] is an object reporting a certain progress to the owning workpackage. There are several specialized types of task objects. All kinds of tasks have a property called '''VALUE''' in common. It is very important, that this property is able to be validated. Therefore, a MetaAttribute (providing a validation timestamp by default) has to be attached on the used MetaProperty.&lt;br /&gt;
&lt;br /&gt;
On both clients, a Task can be reverted by clicking twice on the Not Applicable button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|The MetaProperty ''VALUE'' has to use [[Attributes]] in order to be validated. Otherwise, the calculation of work progress will not be possible.}}&lt;br /&gt;
&lt;br /&gt;
==== Measurement Task ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_MRO_MEASUREMENT_TASK|Measurement Task]] inherits from [[MROCLS_MRO_TASK|Task]] and documents a measured value (e.g. read from a pressure gauge). Therefore, clicking the value on the shown task opens an editor to enter the desired value. If no value was entered before, an empty line will be shown. Once a value has been entered, the task is finished. Alternatively, the task can also be closed by the option ''Not Applicable'' to document the situation of not being able to fullfill the measurement (e.g. the pressure gauge is broken). An additional small value indicator below the main value can report e.g. the previously entered value. The behaviour of this previous value indicator has to be specified separately in the customizing.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Measurment Task Empty UWP.png|Measurement Task without a reported value (WinX)&lt;br /&gt;
File:Measurment Task Not Empty UWP.png|Measurement Task with a reported value (WinX)&lt;br /&gt;
File:Measurment Task Empty Android.jpg|Measurement Task without a reported value (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Progress Task ====&lt;br /&gt;
&lt;br /&gt;
[[MROCLS_MRO_PROGRESS_TASK| Progress Task]] inherits from [[MROCLS_MRO_MEASUREMENT_TASK|Task]] and reports a certain progress while fullfilling a task. The progress will influence the overall progress of the owning workpackage. If the task cannot be fullfilled, it can also be finished with the option ''Not Applicable''.&lt;br /&gt;
&lt;br /&gt;
There is also an [[MRO_PROGRESS_TASK_EDITOR|alternative editor]] available for progress tasks.{{Version/WinXSince|2.5.4}}&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Progress Task UWP.png|Progress Task with a reported work progress (WinX)&lt;br /&gt;
File:Progress Task Android.jpg|Progress Task with a reported work progress and a previous progress(Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Check Task ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_MRO_CHECK_TASK|Check Task]] inherits from [[MROCLS_MRO_TASK|Task]] and is finished by reporting ''Done'' or ''Not Applicable''. This is intended for a simple To-Do task that is either done or not.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Check Task finished UWP.png|Unfinished MRO CheckTask (WinX)&lt;br /&gt;
File:Check Task android.jpg|Not Applicable MRO CheckTask (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Inspection Task ====&lt;br /&gt;
&lt;br /&gt;
[[MROCLS_MRO_INSPECTION_TASK|Inspection Task]] inherits from [[MROCLS_MRO_TASK|Task]] and is finished, when the user reports with a positive or negative answer or ''Not Applicable'' (e.g. reporting a yes/no answer for existing equipment).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=497px heights=69px&amp;gt;&lt;br /&gt;
File:Finished Inspection Task UWP.png|Finished MRO InspectionTask (WinX)&lt;br /&gt;
File:Inspection task android.jpg|Finished MRO InspectionTask (Android)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Sequential Task ====&lt;br /&gt;
The [[MROCLS_SEQUENTIALTASK|sequential task classification]] allows you to pre-define a sequence in which tasks are to be resolved by users. This means that it is required for one or multiple tasks to be finished in order for other tasks to become &amp;quot;unlocked&amp;quot; and editable. A task can have any number of &amp;quot;predecessors&amp;quot;. Predecessors are the tasks that are required to be finished first.&lt;br /&gt;
&lt;br /&gt;
A task can have predecessors that live anywhere else in the object hierarchy. It is not necessary for a task and its predecessors to be part of the same work package, even though this is likely the most common use case.&lt;br /&gt;
&lt;br /&gt;
The state of a sequential task is evaluated both offline and online to get the best possible user experience. The user will see dependent tasks update immediately if their successors were finished, if those tasks are currently visible in the UI. There is 1 case in which the server-side state will override the client-side (offline) evaluation, discussed below.&lt;br /&gt;
The state of each sequential task is evaluated the following way:&lt;br /&gt;
&lt;br /&gt;
# If the server-side state says the task is open, we consider this as the truthful state and don't do any other evaluation.&lt;br /&gt;
# Check if the task has any predecessors.&lt;br /&gt;
# Try to load each predecessor task.&lt;br /&gt;
#* If loading of any predecessor fails (the object is not available offline), the task will be locked.&lt;br /&gt;
# If all predecessor tasks are finished, the task is open and can be edited. Otherwise, the task is locked.&lt;br /&gt;
&lt;br /&gt;
The customizer setting up the task dependency relations needs to ensure that the dependencies are not cyclical. In this case, it would be impossible for any tasks in the &amp;quot;cycle&amp;quot; to be finished.&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
As a demonstration of this feature, see [[Media:Sequential_tasks_winx.mp4|this video]]. The relations between tasks are defined as in [[Media:Task_relations.png|this image]], starting at A1 and A2, which are not dependent on any other tasks. The lines (from left to right) indicate dependencies. This means that B2 has tasks A1 and A2 as its predecessors, for example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Grouped Task {{Version/WinXSince|4.2}}{{Version/XamarinSince|4.2}} ====&lt;br /&gt;
Sometimes, not all tasks have to be finished. More specifically, there might be a predefined condition where you only need to finish a certain number of tasks among a group of them. These are known in {{UBIK}} as [[MROCLS_GROUPEDTASK|grouped tasks]].&lt;br /&gt;
&lt;br /&gt;
The idea is, a group of tasks can be defined as siblings to each other and they also share the same server configured threshold. When the number of finished tasks among that group exceeds the threshold, the entire group is considered as no longer necessary. When reflected in the overall status of the task owner(s), these tasks would appear as if they are finished.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Technically speaking, the finished status is completely independent from the not necessary status on a task. A grouped task which is no longer necessary can be both finished or not yet finished. In other words, users don't have to finish a not necessary grouped task, but they still can.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|The precise status calculation for grouped tasks and their task owners requires the knowledge of all siblings tasks. Imagine 2 out of 3 tasks must be finished but the client only knows 1 in total and the others are only available at the server at that time. This makes it impossible to draw conclusions whether the task(s) should be necessary or not. Under such circumstances, the local status calculation is done as if these are just regular tasks.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Like with the other MRO objects, the client always chooses the best available statuses for grouped tasks to present to the users. More specifically, it uses the statuses calculated by the server when the client is not offline and there are no uncommitted local changes on the involved objects. Otherwise, it uses the statuses calculated locally to the best of its knowledge.}}&lt;br /&gt;
&lt;br /&gt;
A task can also be a grouped and a sequential one at the same time. In such a case, the grouped nature of the sibling tasks will affect the way the task sequence completes.&lt;br /&gt;
&lt;br /&gt;
For example, task A1, A2 and A3 are 3 grouped sibling tasks and only 1 of them needs to be finished. At the same time, they are all predecessors of task B. Normally, all predecessors must be finished (and locked) before task B becomes the next one in the sequence and therefore unlocked. In this case, however, as soon as one of the predecessors is finished, all three become unnecessary (and locked) and task B unlocks as a result of that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Supervisor Task {{Version/XamarinSince|4.8}} ====&lt;br /&gt;
As the name suggests, supervisor tasks are those that must be finished under supervision. When users want to finish a [[MROCLS_MRO_SUPERVISOR_TASK|supervisor task]], they must hand over their work devices to a supervisor. The latter checks the work status and scans an NFC tag if the work is approved. If the [[MROCLS_MRO_SUPERVISOR|supervisor]] has sufficient permissions for the task and the correct supervisor PIN is given, the task gets unlocked and the users can proceed to finish it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=300px heights=300px&amp;gt;&lt;br /&gt;
File:UI_Xamarin_Supervisor_Task_Before_Verification.jpg|Supervisor Task Before Verification/Unlocking (Mobile)&lt;br /&gt;
File:UI_Xamarin_Supervisor_Task_Enter_PIN.jpg|Supervisor Task Enter PIN (Mobile)&lt;br /&gt;
File:UI_Xamarin_Supervisor_Task_After_Verification.jpg|Supervisor Task After Verification/Unlocking (Mobile)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A thing to note is that while the need to verify a supervisor task can be seen as a type of locking, it's certainly not the only reason for a [[Locked_Objects|locked object]]. This means a supervisor task can remain locked (although for different reasons) even after a supervisor has successfully verified it. This can often be the case if you use it in combination with other features such as [[MRO_Objects_(Client)#Sequential_Task|sequential tasks]], [[User_Rights|user rights]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|For security reasons, the verification process is cancelled if the supervisor enters the wrong PIN for three times. Scanning the tag again is required in that case.}}&lt;br /&gt;
{{Hint|A setting controls [[RFID_tags#Choose_which_information_to_use_from_a_tag|which information in a scanned tag is used]] during this process.}}&lt;br /&gt;
&lt;br /&gt;
==== Signature Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
The Signature Task is a task type that is completed by capturing a handwritten signature from the user. The task contains an editor field that serves as the entry point for the signing process. When the user clicks (or taps) on the editor field, a signature dialog opens. Within this dialog, the user can provide their signature. After confirming the input, the signature is saved and the task is automatically marked as completed.&lt;br /&gt;
&lt;br /&gt;
If the task is signed while the client is online:&lt;br /&gt;
* The User (signee) is resolved immediately by the server and displayed.&lt;br /&gt;
* The ValidationTimestamp is generated and displayed.&lt;br /&gt;
* Both values are shown directly in the editor field after signing.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The User only gets resolved by the server and displayed once you're in online mode}}&lt;br /&gt;
&lt;br /&gt;
If the displayed User and/or ValidationTimestamp cannot be fully shown due to limited space in the editor field, the complete information can be accessed via a tooltip.&lt;br /&gt;
&lt;br /&gt;
* In '''UBIK WinX (UWP)''', hover over the editor field with the mouse.&lt;br /&gt;
* In '''UBIK Mobile''', perform a long press on the editor field.&lt;br /&gt;
A tooltip will appear, displaying the full User and ValidationTimestamp without truncation.&lt;br /&gt;
&lt;br /&gt;
==== Picture Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_PICTURE_TASK|picture task]] is a check task which can only be finished when it has at least one child document containing a valid file. In the UI, an additional photo button is presented next to the check so users can easily take photos before finishing the tasks.&lt;br /&gt;
* As any other objects, picture tasks can carry and display [[SYSCLS_CHILDINFOOWNER|child count information]]. But that is not a mandatory part of the feature. Even when it's not configured and not visible in the UI, you can still finish the tasks.&lt;br /&gt;
* In WinX/UWP, the UI also presents an expander which allows you to display the child documents of picture tasks. This is not present by default in the Mobile app due to the screen size limit but [[Object_hierarchy_in_XAML:_NextLevel,_ParentLevel,_LinkedLevel#Show_NextLevel_Children.2FDocuments|can be easily customized]].&lt;br /&gt;
&lt;br /&gt;
{{Hint|The task is named as such because pictures are the most commonly used types, but the child documents can be of other types as well. }}&lt;br /&gt;
&lt;br /&gt;
When a user tries to finish a picture task by tapping the check, the app might perform some data synchronization first if in online mode, which includes&lt;br /&gt;
* Syncing the child objects (including documents) of the task.&lt;br /&gt;
* Downloading the file(s) of the child documents.&lt;br /&gt;
During data synchronization, the check button on that task turns into a wait indicator. Afterwards, the app checks if the prerequisites to finish the task are met.&lt;br /&gt;
* If there are no child documents or no local files for the child documents, the task remains unfinished and the user gets informed about the reasons.&lt;br /&gt;
* Otherwise, the task gets finished and the photo button gets disabled.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Setting NA (not applicable) on a picture task is always possible, regardless of the condition of child documents.}}&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
==== Numeric Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_MRO_NUMERIC_TASK|numeric task]] is a task which records a double value (e.g. from a temperature sensor). Entering the value (including Not Applicable) completes the task.&lt;br /&gt;
* The value is compared against an accaptable value range which is not editable on the client.&lt;br /&gt;
* Deviation from this range results in visual feedback as well as the [[#Tech Status|tech status]] being set to display an issue.&lt;br /&gt;
* If the configured value range is invalid (e.g. min &amp;gt; max) and the user enters a value, the [[#Tech Status|tech status]] will also be set to display an issue.&lt;br /&gt;
* A numeric task also has a special value unit that can be set per task instance. If set, it overrides the standard value unit defined on the [[MetaProperty#Unit_Item|MetaProperty]].&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
==== Pick List Task {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ====&lt;br /&gt;
&lt;br /&gt;
A [[MROCLS_PICK_LIST_TASK|Pick List task]] looks and behaves the same like a standard Integer Task with SelectiveList. Other than the standard Integer Task, the Pick List Task has an [[UBIK_Active_Lists|Active List]] defined on instance level to pick from for its value property. The task counts as finished as soon as a list item has been selected, or when pressing ''Not Applicable''.&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|MRO Objects (UBIK WinX)]]&lt;br /&gt;
[[Category:Client|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Mobile|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|MRO Objects (Client)]]&lt;br /&gt;
[[Category:WinX|MRO Objects (UBIK WinX)]]&lt;br /&gt;
&lt;br /&gt;
=== MRO objects with project information (WinX only) {{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:UI_WinX_MRO_ProjectInfo.png|thumb|MRO Object with Project Info (WinX)]]&lt;br /&gt;
An MRO object (except tasks) might also bring along [[MROCLS_PROJECTINFORMATION|project information]]. In this case, the project information together with the MRO progress are displayed in a bar chart. The start &amp;amp; end dates of the MRO object are displayed on the progress bar. The length and the position of the progress bar, together with the current date mark indicate the timeline.&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Locking ==&lt;br /&gt;
When an (MRO) object is locked, editing it becomes impossible. More details about [[Locked_Objects|locked objects]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MRO (Plugin)]]&lt;br /&gt;
* [[MROCLS_PROJECT]]&lt;br /&gt;
* [[MROCLS_PROJECTINFORMATION]]&lt;br /&gt;
* [[MROCLS_SEQUENTIALTASK]]&lt;br /&gt;
* [[MROCLS_GROUPEDTASK]]&lt;br /&gt;
* [[MROCLS_MRO_CHECK_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_INSPECTION_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_MEASUREMENT_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_PROGRESS_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_TASK]]&lt;br /&gt;
* [[MROCLS_MRO_TASKOWNER]]&lt;br /&gt;
* [[MROCLS_MRO_WORKPACKAGE]]&lt;br /&gt;
* [[MROCLS_PROCEDURE#Procedure Workpackage]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_TASK#Switch Task]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_END_TASK#Switch End Task]] (Classification)&lt;br /&gt;
* [[MROCLS_CALCULATION_TASK#Calculation Task]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|MRO Objects (UBIK WinX)]]&lt;br /&gt;
[[Category:Client|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Mobile|MRO Objects (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|MRO Objects (Client)]]&lt;br /&gt;
[[Category:WinX|MRO Objects (UBIK WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=MROCLS_PICK_LIST_TASK&amp;diff=29698</id>
		<title>MROCLS PICK LIST TASK</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=MROCLS_PICK_LIST_TASK&amp;diff=29698"/>
				<updated>2026-04-20T09:04:12Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClassificationInfoBox&lt;br /&gt;
| title = Pick list classification object&lt;br /&gt;
| name = {{PAGENAMEE}}&lt;br /&gt;
| inheritance = [[MROCLS_MRO_TASK]] &lt;br /&gt;
| namespace = MRO.Classification&lt;br /&gt;
| purpose = Classify tasks as pick list tasks&lt;br /&gt;
| version = 5.0.0&lt;br /&gt;
| id = {AC61934E-DDFD-4FAE-A28F-2F19EE70E0EE}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Classifies an object as a Pick List Task. &lt;br /&gt;
A Pick List Task needs a predefined [[UBIK_Active_Lists|Active List]] to pick from for its value property. The task counts as finished as soon as a list item has been selected. Each List item needs an integer value assigned to it. The value 0 is reserved for the server since it is used to provide a reopening functionality for the task.&lt;br /&gt;
&lt;br /&gt;
== MetaProperties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=50%&lt;br /&gt;
|-&lt;br /&gt;
! width=30% | Name !! width=20% | Data type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| VALUE || {{Integer}} || Selected item (Undefined = 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MROCLS_MRO_TASKOWNER#Task Owner]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_TASK#Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_MEASUREMENT_TASK#Measurement Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_PROGRESS_TASK# Progress Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_CHECK_TASK#Check Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_INSPECTION_TASK#Inspection Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_WORKPACKAGE#Work Package]] (Classification)&lt;br /&gt;
* [[MROCLS_SEQUENTIALTASK#Sequential Task]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_TASK#Switch Start Task]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_END_TASK#Switch End Task]] (Classification)&lt;br /&gt;
* [[MRO_Objects_(Client)#Work_Package]]&lt;br /&gt;
* [[MRO_(Plugin)#Work_Package]]&lt;br /&gt;
* [[MROCLS_PROCEDURE#Procedure Workpackage]] (Classification)&lt;br /&gt;
* [[MROCLS_CALCULATION_TASK#Calculation Task]] (Classification)&lt;br /&gt;
* [[UBIK_Active_Lists]]&lt;br /&gt;
* [[Active_List_Client]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Classifications|MROCLS PICK LIST TASK]]&lt;br /&gt;
[[Category:Plugin|MROCLS PICK LIST TASK]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Converters_In_Mobile&amp;diff=29697</id>
		<title>Converters In Mobile</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Converters_In_Mobile&amp;diff=29697"/>
				<updated>2026-04-20T08:48:31Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* List of Available Converters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Converters''' are used to prepare application data to format a UI defined by a XAML markup. These converters make it possible to show elements only when specific conditions (like data being available) are met. This allows the creation of a good UI with XAML code only, improving code readability while also decreasing code complexity.&lt;br /&gt;
&lt;br /&gt;
This page explains how to properly use converters for customizing the UBIK Mobile User Interface. Furthermore, all available converters are listed to provide a good reference.&lt;br /&gt;
&lt;br /&gt;
= Definition =&lt;br /&gt;
In Mobile clients, before converters can be used, they need to be defined in the page's ''Resources'' tag. Make sure to include the &amp;lt;code&amp;gt;UBIK.CPL.Converters&amp;lt;/code&amp;gt; namespace in the namespace definitions!&lt;br /&gt;
The following example shows how the &amp;lt;code&amp;gt;NullToBoolConverter&amp;lt;/code&amp;gt; can be defined:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Mobile(Xamarin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:converters=&amp;quot;clr-namespace:UBIK.CPL.Converters;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;converters:NullToBoolConverter x:Key=&amp;quot;NullToBool&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Cuztomizing --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The key ''NullToBool'' makes this converter accessible from the customizing in this page.&lt;br /&gt;
== Definition With Properties ==&lt;br /&gt;
In the following example, which is the same example from above, the '''StringFormatConverter''' will be additionally defined. To add more formatting possibilities, it has two extra properties, which need to be prefilled during initialization. Henceforth, these properties can be prefilled with static values or with static references.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Mobile(Xamarin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:converters=&amp;quot;clr-namespace:UBIK.CPL.Converters;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;converters:NullToBoolConverter x:Key=&amp;quot;NullToBool&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;Formatter&amp;quot; Parameter1=&amp;quot;5&amp;quot; Parameter2=&amp;quot;{Binding Children.Items.Count}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Cuztomizing --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Whereever this converter is used within the file it was defined in, ''Formatter'' will always have its ''Parameter1'' set to ''5'' and its ''Parameter2'' to the number of children of the currently viewed UBIK object. If this behavior is not intended, consider defining another ''StringFormatConverter'' with a '''different Key''' in the same way as shown above.&amp;lt;br/&amp;gt;&lt;br /&gt;
See below to find out how to use this converter!&lt;br /&gt;
= Usage =&lt;br /&gt;
A converter can only be used in conjunction with a &amp;lt;code&amp;gt;{Binding}&amp;lt;/code&amp;gt;. The following is an easy example, showing how the ''NullToBool'' converter, defined above, can be used.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;My Text&amp;quot; IsVisible=&amp;quot;{Binding MyBindableProperty, Converter={StaticResource NullToBool}}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If '''MyBindableProperty''' is ''null'' or an empty string, the converter will return '''true''', making the Label visible!&lt;br /&gt;
== Parameter ==&lt;br /&gt;
Some converters accept a '''ConverterParameter''', that passes additional information. Closely read the description of the available converters to find out which accept or even require a parameter to work properly. In Ubik, some converters accept a string parameter, consisting of multiple individual parameters separated by &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An example of this behavior is the '''ContainsToBoolConverter''', which checks if the current value is contained within a collection of values (passed as the ''parameter''):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;My Text&amp;quot; IsVisible=&amp;quot;{Binding MyValue, Converter={StaticResource ContainsToBool}, ConverterParameter=1|2|3|4|5|6|7|8|9}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The label will only be visible if the ''MyValue'' property (which is expected to parse as an Integer in this example) is one of the values of the parameter.&amp;lt;br/&amp;gt;&lt;br /&gt;
Again, to get the converter working, don't forget to define it in the page's resources!&lt;br /&gt;
&lt;br /&gt;
== FallbackValue ==&lt;br /&gt;
In some rare cases, a converter might not return anything desired (like ''null'') if some condition doesn't work out as it should (e.g. ''value'' is ''null''). To still be able to get a usable return value, it's possible to define a '''FallbackValue'''.&lt;br /&gt;
&lt;br /&gt;
== Example Usage of StringFormatConverter ==&lt;br /&gt;
This converter can take up to two additional parameters during definition. Please see [[#Definition With Properties|Definition With Properties]] for more information!&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding MyValue, Converter={StaticResource Formatter}, ConverterParameter=The Value of my value is \{0\}\, compared to \{1\} and \{2\}!}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
It's important to note that special characters, like &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;,&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, need to be escaped using a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;\&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, else the expression will be wrongly interpreted (and nothing happens)!&lt;br /&gt;
&lt;br /&gt;
The text of the '''ConverterParameter''' will be analyzed, and any occurrance (including duplicates) of &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{1}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{2}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; replaced with the '''binding value''', '''Formatter.Parameter1''' and '''Formatter.Parameter2''' respectively!&lt;br /&gt;
&lt;br /&gt;
Make sure to note, that Maui has a native '''[https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/string-formatting?view=net-maui-9.0 string formatting]''' option as well, that is probably way faster than using a converter for it. Furthermore, it supports formatting options!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Data Source =&lt;br /&gt;
Although technically not a converter, the '''SfDataSourceExt''' control is currently on the way of replacing the '''SfDataSourceConverter''', due to improved performance.&lt;br /&gt;
The usage is pretty simple: Similar to the converters, it needs to be defined in the '''Page Resources'''. Then, a '''Key''' and '''Expression''', as well as an '''ItemsSource''' have to be defined. Last, but not least, the the converter can be used within the '''ItemsSource''' property of a Syncfusion '''SfListView'''. See the following example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
Mobile(Xamarin):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ContentView x:Class=&amp;quot;UBIK.CPL.Resources.UBIKChildArea&amp;quot; &lt;br /&gt;
    xmlns=&amp;quot;http://xamarin.com/schemas/2014/forms&amp;quot; &lt;br /&gt;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2009/xaml&amp;quot; &lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
             &amp;lt;controls:SfDataSourceExt&lt;br /&gt;
                x:Key=&amp;quot;MyDataSource&amp;quot;&lt;br /&gt;
                ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;Item.Content.MetaUID.ToString().ToLower()==&amp;amp;quot;85a50533-3817-4a0b-84cd-615b48b62565&amp;amp;quot; &amp;amp;amp;&amp;amp;amp; Item[&amp;amp;quot;ORGA_STATUS&amp;amp;quot;]!=100&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
    &amp;lt;sync:SfListView&lt;br /&gt;
           x:Name=&amp;quot;ListView1&amp;quot;&lt;br /&gt;
           AllowSwiping=&amp;quot;True&amp;quot;&lt;br /&gt;
           ItemSize=&amp;quot;60&amp;quot;&lt;br /&gt;
           ItemTemplate=&amp;quot;{StaticResource ChildTemplateSelector}&amp;quot;&lt;br /&gt;
           ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource MyDataSource}}&amp;quot;&lt;br /&gt;
           LeftSwipeTemplate=&amp;quot;{StaticResource SwipeLeftTemplateSelector}&amp;quot;&lt;br /&gt;
           RightSwipeTemplate=&amp;quot;{StaticResource SwipeRightTemplateSelector}&amp;quot;&lt;br /&gt;
           SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Thanks to the given expression, filtering is applied once the data source is evaluated. It's important to have [https://www.advancedinstaller.com/user-guide/xml-escaped-chars.html XML special characters] correctly escaped, like the example shows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= List of Available Converters =&lt;br /&gt;
The following list contains all currently available converters for UBIK Mobile customizing. &lt;br /&gt;
&lt;br /&gt;
'''Two-way''' converters can be used with two-way bindings, e.g. a text-box displaying an editable value. If the value updates in the model, the text-box text changes. If the user edits the value, the value in the model behind also gets updated.&lt;br /&gt;
As a clarification, '''Value''' refers to the '''Binding Value''', and '''parameter''' to the '''ConverterParameter'''!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Converter !! 2-Way !! Output Type || Input Type || Parameter Type || Description &lt;br /&gt;
|-&lt;br /&gt;
| BooleanConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Boolean, String || || &lt;br /&gt;
Interprets a '''boolean value''' or a '''String value''' and returns it. If the value cannot be interpreted, ''false'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| BooleanInvertConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Boolean, String || || &lt;br /&gt;
Interprets a '''boolean value''' or a '''String value''' and converts it into its '''inverted value'''. If the value cannot be interpreted, ''false'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| BooleanToFontAttributeConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || FontAttribute || Boolean || || &lt;br /&gt;
Converts a '''boolean''' into a '''[https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.fontattributes?view=xamarin-forms font attribute]''' value. In detail, if the value is ''true'', the parameter is interpreted (''Bold'', ''Italic'', ''None'') and returned. The default returned font-attribute is ''None''.&lt;br /&gt;
|- &lt;br /&gt;
| ByteToImageSourceValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ImageSource || Byte[ ],&amp;lt;br/&amp;gt;Byte Stream || || &lt;br /&gt;
Converts a '''byte stream''' value into an '''image source'''.&lt;br /&gt;
|- &lt;br /&gt;
| ChildAreaTemplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Child&amp;lt;wbr/&amp;gt;Area&amp;lt;wbr/&amp;gt;Template || Content&amp;lt;wbr/&amp;gt;ViewModel || || &lt;br /&gt;
Returns a '''ChildAreaTemplate''' from a '''Content&amp;lt;wbr/&amp;gt;ViewModel''' or ''null'' if the ViewModel cannot be interpreted.&lt;br /&gt;
|- &lt;br /&gt;
| ChildItem&amp;lt;wbr/&amp;gt;SelectionMode&amp;lt;wbr/&amp;gt;To&amp;lt;wbr/&amp;gt;SfListView&amp;lt;wbr/&amp;gt;SelectionMode&amp;lt;wbr/&amp;gt;Converter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || [https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~SelectionMode.html ListView&amp;lt;wbr/&amp;gt;SelectionMode] || ChildItem&amp;lt;wbr/&amp;gt;SelectionMode || || &lt;br /&gt;
Converts a '''ChildItem&amp;lt;wbr/&amp;gt;SelectionMode''' to a Syncfusion '''[https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.SfListView~SelectionMode.html ListView&amp;lt;wbr/&amp;gt;SelectionMode]'''. Default is &amp;quot;Single&amp;quot;.&lt;br /&gt;
|- &lt;br /&gt;
| ClassificationToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || ContentViewModel || || &lt;br /&gt;
Returns a '''boolean''' indicating whether the given '''ContentViewModel''' is successfully classified.&lt;br /&gt;
|- &lt;br /&gt;
| ContainsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Checks if the delivered value is '''contained''' within a collection of values (delivered in the parameter, seperated with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;). If the value is contained, ''true'' will be returned, else ''false''. The functionality is similar to the ''ContainsToVisibilityConverter'' in the WinX project.&lt;br /&gt;
|- &lt;br /&gt;
| ContainsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;Object || || &lt;br /&gt;
Same as the ''ContainsToBoolConverter'', but with '''inverted output'''.&lt;br /&gt;
|- &lt;br /&gt;
| ContentAreaTeamplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || UBIKContentArea || ContentViewModel || || This converter is '''not yet finished''' and just returns the ''UBIKContentArea'' if the value is a ''ContentViewModel''.&lt;br /&gt;
|- &lt;br /&gt;
| StringToDateTimeTypesConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓  || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime], [https://docs.microsoft.com/en-us/dotnet/api/system.timespan TimeSpan] || String || || &lt;br /&gt;
Converts a String to the correct DateType, which can be either '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' or '''[https://docs.microsoft.com/en-us/dotnet/api/system.timespan TimeSpan]'''. If the value cannot be interpreted, the unchanged String value is returned. The Converter can also be used to convert DateTime or TimeSpan into a string. The Format will be determined by the current culture.&lt;br /&gt;
|- &lt;br /&gt;
| DateTimeOffsetToDateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime] || [https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset DateTimeOffset] || || &lt;br /&gt;
Converts a '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset DateTimeOffset]''' to the correct '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''', applied to the current date and time. If the value cannot be interpreted, a new ''DateTime'', generated from the device's current time (&amp;lt;code&amp;gt;DateTime.Now&amp;lt;/code&amp;gt;) is returned.&lt;br /&gt;
|- &lt;br /&gt;
| DateTimeToFromNowStringConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || [https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime] || || &lt;br /&gt;
Returns a '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' into a human-readable and easily understandable ''string message'' (the last applying one will be taken):&lt;br /&gt;
* Less than 5 minutes in the past: ''Just now''&lt;br /&gt;
* Less than 10 minutes in the past: ''A few minutes ago''&lt;br /&gt;
* Less than 1 hour in the past: ''An hour ago''&lt;br /&gt;
* Less than 23 Hours in the past: ''Some hours ago''&lt;br /&gt;
* Less than 1 day in the past: ''Yesterday''&lt;br /&gt;
* More than 1 day in the past: The ''DateTime'' value formatted according to the device's localization rules.&lt;br /&gt;
* Not interpretable: ''???''&lt;br /&gt;
|- &lt;br /&gt;
| DebugConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Object || Object || || &lt;br /&gt;
A converter returning the given value for '''debug reasons'''.&lt;br /&gt;
|- &lt;br /&gt;
| DistanceToStringConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Double || || &lt;br /&gt;
Returns the given value interpreted as '''length'''. Values are returned in kilometers with two comma digits (e.g. 2.84km), values smaller than 1km are returned as meters and ''NaN'' will be returned as ''infinity''. If the value cannot be interpreted, an empty string will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| EqualityToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object,&amp;lt;br/&amp;gt;String || Object,&amp;lt;br/&amp;gt;String || &lt;br /&gt;
Returns ''true'' if the given value and parameter are '''equal to each other''', ''false'' otherwise.&lt;br /&gt;
|- &lt;br /&gt;
| EqualityToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object,&amp;lt;br/&amp;gt;String || Object,&amp;lt;br/&amp;gt;String || &lt;br /&gt;
Returns ''true'' if the given value and parameter are '''not equal to each other''', ''false'' otherwise.&lt;br /&gt;
|- &lt;br /&gt;
| SelectionChangedEventArgsConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.selectionchangedeventargs List&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs] || [https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs.html Item&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs] || || &lt;br /&gt;
Converts an Syncfusion '''[https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfListView.XForms~Syncfusion.ListView.XForms.ItemSelectionChangedEventArgs.html Item&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs]''' to a '''[https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.selectionchangedeventargs List&amp;lt;wbr/&amp;gt;Selection&amp;lt;wbr/&amp;gt;Changed&amp;lt;wbr/&amp;gt;EventArgs]'''. &amp;lt;br/&amp;gt;The use-case of this converter is highly specific.&lt;br /&gt;
|- &lt;br /&gt;
| FilterCriterionToValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || String || FilterCriterion || || &lt;br /&gt;
Converts a [[Property_Based_Content_Filters|'''FilterCriterion''']] to its value. The functionality is similar to UWP's FilterCriterionToValueConverter.&lt;br /&gt;
|- &lt;br /&gt;
| GuidPropertyValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || String || Guid || Binding, where source is ContentViewModel || &lt;br /&gt;
Returns the '''first item''' of the parameter's ''Source-ViewModel'' that '''matches the given GUID''' value. If none is found, ''null'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| IntToColorConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Color || Integer || || &lt;br /&gt;
Converts an ARGB '''integer''' value to a '''color'''. If the value cannot be interpreted, the converter tries to parse the parameter as a ''color'' to return it. If everything fails, ''transparent'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| ItemCountToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Integer || Integer || &lt;br /&gt;
This converter has a '''property''' to set the '''boolean return value''', called ''LesserOrEqualReturnValue''. This property-value will be returned if the given value is '''smaller than or equal to''' the threshold (parameter, defaults to 0). If the value is '''bigger than''' the threshold, the '''inverted''' ''LesserOrEqualReturnValue'' will be returned.&amp;lt;br/&amp;gt;&lt;br /&gt;
In any other case (like the value cannot be interpreted), ''false'' is returned, so it's a good idea to set the converter's property in a way that the return is only ''true'' if you need it.&lt;br /&gt;
|- &lt;br /&gt;
| ItemCountToOverflowConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Integer || Integer || Creates a '''human-readable text''' indicating '''how many items are available'''. The value will be interpreted as the '''total item count''' and the parameter as '''overflow threshold''' (defaults to 99). &amp;lt;br/&amp;gt;If there are more items than the overflow, the overflow value with a + sign will be returned (e.g. 99+). If not, the value itself will be returned. If everything fails, ''null'' is returned.&lt;br /&gt;
|- &lt;br /&gt;
| NullToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Object,&amp;lt;br/&amp;gt;String|| || &lt;br /&gt;
''Null'' or an '''empty string''' value get converted to ''true'', and everything else to ''false''.&lt;br /&gt;
|- &lt;br /&gt;
| NullToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean || Object,&amp;lt;br/&amp;gt;String || || &lt;br /&gt;
''Null'' or an '''empty string''' value get converted to ''false'', and everything else to ''true''.&lt;br /&gt;
|- &lt;br /&gt;
| PathToImageSourceValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Image Source || String || || &lt;br /&gt;
Reads the '''path''' provided as parameter and creates an '''image source''' from it.&lt;br /&gt;
|- &lt;br /&gt;
| PercentageToProgressConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Double || Integer,&amp;lt;br/&amp;gt;Double || || &lt;br /&gt;
The '''numeric value'''  (int or double), interpreted as '''percentage from 0 to 100''', get converted to a '''progress level'''  (0 to 1). Values outside this range will be contained.&lt;br /&gt;
|- &lt;br /&gt;
| PropertyNameExistsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean (Nullable) || ContentViewModel,&amp;lt;br/&amp;gt;IContent || || &lt;br /&gt;
Converts a property to a '''boolean''' based on its '''existence'''. If it exists, ''true'' will be returned, else ''false'' or ''null'' (if something couldn't be properly interpreted).&lt;br /&gt;
|- &lt;br /&gt;
| PropertyNameExistsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean (Nullable) || ContentViewModel,&amp;lt;br/&amp;gt;IContent || || &lt;br /&gt;
Converts a property to a '''boolean''' based on its '''existence'''. If it exists, ''false'' will be returned, else ''true'' or ''null'' (if something couldn't be properly interpreted).&lt;br /&gt;
|- &lt;br /&gt;
| RootAreaTemplateConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ContentView || Object || || &lt;br /&gt;
If the provided value is '''not null''', the '''UBIKRootArea template''' will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| SelectiveItemToValueConverter || style=&amp;quot;text-align: center;&amp;quot; | ✓ || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Boolean,&amp;lt;br/&amp;gt;String,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;Double,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;Guid,&amp;lt;br/&amp;gt;FileReferenceData,&amp;lt;br/&amp;gt;GeoData,&amp;lt;br/&amp;gt;Object || Binding, where source is ContentViewModel || &lt;br /&gt;
Converts a '''item''' of a '''selective list''' to its value. If none is found, the passed ''value'' will be returned.&lt;br /&gt;
|- &lt;br /&gt;
| SelectiveListToItemsConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || List of PropertyItems  || IPropertyItem || || &lt;br /&gt;
Returns all items from a selective list. The converter can only be used in combination with a standard MetaProperty level [[SELECTIVELIST|SelectiveList]], not with an instance level [[Active_List_Client|Active list]].&lt;br /&gt;
|- &lt;br /&gt;
| SfDataSourceConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || DataSource (for ListView) || Double || String (Expression) || &lt;br /&gt;
It's an advanced converter used for '''loading items''' and '''applying filters''' on it. It replaces to ''CollectionToViewConverter'' from the WinX.UWP project. The data source can be directly used with a ''[https://help.syncfusion.com/xamarin/sflistview/overview SfListView]''.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''This converter is obsolete!'''&amp;lt;br/&amp;gt;Use '''SfDataSourceExt''' (see [[#Data Source|Data Source]]) instead!&lt;br /&gt;
|- &lt;br /&gt;
| StringContainsToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String || String || &lt;br /&gt;
Returns a '''boolean''' indicating whether the parameter string is included in the value string.&lt;br /&gt;
|- &lt;br /&gt;
| StringContainsToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || String || String || &lt;br /&gt;
Same as the ''StringContainsToBoolConverter'' but with '''inverted output'''.&lt;br /&gt;
|- &lt;br /&gt;
| StringFormatConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Object || String || Allows the creation of a '''nicely formatted ''string'' message''', similar to [https://docs.microsoft.com/en-us/dotnet/api/system.string.format C#'s String.Format method].&amp;lt;br/&amp;gt;The value will be interpreted as the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element, and the parameter is the template string (e.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;The total count is: {0}!&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Up to two additional parameters, named ''Parameter1'' and ''Parameter2'', can be defined at the converter declaration. Adding formatting options to the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{0}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; notation is not possible.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Attention''', using the native '''[https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/string-formatting StringFormat]''' option is not only faster, but it also offers more customizability of the value!&amp;lt;br/&amp;gt;&lt;br /&gt;
You might still want to use the ''StringFormatConverter'' in rare cases, though!&lt;br /&gt;
|- &lt;br /&gt;
| ToStringFormatConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || String || Double,&amp;lt;br/&amp;gt;Float,&amp;lt;br/&amp;gt;Integer,&amp;lt;br/&amp;gt;DateTime,&amp;lt;br/&amp;gt;String || String || Converts '''primitives''' or '''[https://docs.microsoft.com/en-us/dotnet/api/system.datetime DateTime]''' to string and allows the application of '''[https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings formatting options]''' (as parameter). &amp;lt;br/&amp;gt;Adding a &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; to the end of the format-parameter allows '''[https://docs.microsoft.com/en-us/dotnet/api/system.math.truncate truncation]''' of all decimal places.&lt;br /&gt;
|-&lt;br /&gt;
| TypeNameToBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object || String || Returns ''true'' if the type name of the value is present in the parameter-string (seperated by &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
|- &lt;br /&gt;
| TypeNameToInvertedBoolConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || Boolean || Object || String || Inverted ''TypeNameTo&amp;lt;wbr/&amp;gt;BoolConverter''.&lt;br /&gt;
|- &lt;br /&gt;
| DataTemplateItemTemplateSelectorConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ChildItem&amp;lt;wbr/&amp;gt;Template&amp;lt;wbr/&amp;gt;Selector || String || String || Chooses what '''ChildItem&amp;lt;wbr/&amp;gt;Template&amp;lt;wbr/&amp;gt;Selector''' to return. Having a parameter with the content &amp;quot;Small&amp;quot; returns the small item template selector.&lt;br /&gt;
|- &lt;br /&gt;
| DataTemplateItemsPanelConverter || style=&amp;quot;text-align: center;&amp;quot; | ✗ || ItemsPanelTemplate || Query&amp;lt;wbr/&amp;gt;Details&amp;lt;wbr/&amp;gt;Page&amp;lt;wbr/&amp;gt;ViewModel || || Chooses what '''ItemPanel&amp;lt;wbr/&amp;gt;Template''' to return. Having a parameter with the content &amp;quot;Small&amp;quot; returns the small item template selector.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Converters In Xamarin]]&lt;br /&gt;
[[Category:Mobile|Converters In Xamarin]]&lt;br /&gt;
[[Category:XAML|Converters In Xamarin]]&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
[[XAML#Converters|Converters in UWP/WinX]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client | XAML | Xamarin]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Converters In Xamarin]]&lt;br /&gt;
[[Category:Mobile|Converters In Xamarin]]&lt;br /&gt;
[[Category:XAML|Converters In Xamarin]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=MROCLS_PICK_LIST_TASK&amp;diff=29667</id>
		<title>MROCLS PICK LIST TASK</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=MROCLS_PICK_LIST_TASK&amp;diff=29667"/>
				<updated>2026-04-15T12:40:04Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClassificationInfoBox&lt;br /&gt;
| title = Pick list classification object&lt;br /&gt;
| name = {{PAGENAMEE}}&lt;br /&gt;
| inheritance = [[MROCLS_MRO_TASK]] &lt;br /&gt;
| namespace = MRO.Classification&lt;br /&gt;
| purpose = Classify tasks as pick list tasks&lt;br /&gt;
| version = 5.0.0&lt;br /&gt;
| id = {AC61934E-DDFD-4FAE-A28F-2F19EE70E0EE}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Classifies an object as a Pick List Task. &lt;br /&gt;
A Pick List Task needs a predefined List to pick from for its value property. The task counts as finished as soon as a list item has been selected. Each List item needs an integer value assigned to it. The value 0 is reserved for the server since it is used to provide a reopening functionality for the task.&lt;br /&gt;
&lt;br /&gt;
== MetaProperties ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=50%&lt;br /&gt;
|-&lt;br /&gt;
! width=30% | Name !! width=20% | Data type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| VALUE || {{Integer}} || Selected item (Undefined = 0)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MROCLS_MRO_TASKOWNER#Task Owner]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_TASK#Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_MEASUREMENT_TASK#Measurement Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_PROGRESS_TASK# Progress Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_CHECK_TASK#Check Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_INSPECTION_TASK#Inspection Task]] (Classification)&lt;br /&gt;
* [[MROCLS_MRO_WORKPACKAGE#Work Package]] (Classification)&lt;br /&gt;
* [[MROCLS_SEQUENTIALTASK#Sequential Task]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_TASK#Switch Start Task]] (Classification)&lt;br /&gt;
* [[MROCLS_SWITCH_END_TASK#Switch End Task]] (Classification)&lt;br /&gt;
* [[MRO_Objects_(Client)#Work_Package]]&lt;br /&gt;
* [[MRO_(Plugin)#Work_Package]]&lt;br /&gt;
* [[MROCLS_PROCEDURE#Procedure Workpackage]] (Classification)&lt;br /&gt;
* [[MROCLS_CALCULATION_TASK#Calculation Task]] (Classification)&lt;br /&gt;
* [[UBIK_Active_Lists]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Classifications|MROCLS PICK LIST TASK]]&lt;br /&gt;
[[Category:Plugin|MROCLS PICK LIST TASK]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Multi_Select_(UBIK_Client)&amp;diff=29658</id>
		<title>Multi Select (UBIK Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Multi_Select_(UBIK_Client)&amp;diff=29658"/>
				<updated>2026-04-14T09:53:27Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Editing common properties of selected items (UWP only) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Multi Select mode aims to improve the efficiency of performing actions on a large number of selected objects (Mobile &amp;amp; UWP), as well as changing property values for a large number of selected objects (UWP only). Editing property values for a large number of objects was known in some previous UWP versions as Mass Editing. Currently, the Multi Select mode is available for lists of children (including task and query objects) and documents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Activating the multi select mode ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
Clicking on a Multi Select button, which will appear when hovering over a list, activates the Multi Select mode. A panel at the left side gets displayed.&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile&amp;quot;&amp;gt;&lt;br /&gt;
The Multi Select mode gets enabled by holding (long tapping) an item. As soon as it is active, a panel on the bottom gets displayed.&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XAML code, you can use &amp;lt;code&amp;gt;ListViewModel.BulkOperation.ToggleMultiSelectCommand&amp;lt;/code&amp;gt; to (de)activate the multi select mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Multi select panel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
The header displays the count of the currently selected items and three buttons.&lt;br /&gt;
The first one is for selecting all items, the second for deselecting all items at one click. The {{key press|x}} button closes the panel and deactivates the Multi Select mode.&lt;br /&gt;
Further, the panel contains two tabs.&lt;br /&gt;
The &amp;quot;properties&amp;quot; tab displays all common editable properties of the selected items. If none are selected, or if the selected items don't share any common properties, it will remain empty.&lt;br /&gt;
The &amp;quot;other options&amp;quot; tab contains buttons to perform actions on all selected items.&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile&amp;quot;&amp;gt;&lt;br /&gt;
The Multi Select panel in the Mobile client is located at the bottom.&lt;br /&gt;
It displays the count of selected items, command buttons for Copy, Discard, Delete and Download actions and a close button to deactivate the Multi Select mode.&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UBIKWinXUI_MultiSelect1.JPG|thumb|Multi Select mode (UWP)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hint|Note: Please only use the buttons in the Multi Select Panel to perform actions on the selected objects. Others, like content area / context menu button actions are still related to the content page and do not work for the selected objects.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the current usecase and the standard client, the Multi Select mode can be activated for Document and Children objects in parallel, hence when activating the Multi Select mode in the Children tab and then switching to Documents tab, it is possible to enable a separate Multi Select panel there.&lt;br /&gt;
&lt;br /&gt;
By navigating away from the related content page, all active Multi Select modes get deactivated automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selection ==&lt;br /&gt;
&lt;br /&gt;
[[File:UBIKCPLXUI_MultiSelect1.JPG|thumb|Multi Select mode (Mobile)]]&lt;br /&gt;
&lt;br /&gt;
By default, all objects are deselected when the Multi Select Mode gets invoked. Items can be selected by tapping on them. Therefore, navigating into an object in the list by tapping on it is no longer available. To be able to navigate again, the Multi Select mode needs to be turned off.&lt;br /&gt;
&lt;br /&gt;
To select or deselect all items, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.SelectAllCommand&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ListViewModel.BulkOperation.DeselectAllCommand&amp;lt;/code&amp;gt; can be used as command binding. These options are currently not presented in the standard Mobile UI.&lt;br /&gt;
&lt;br /&gt;
In UWP, there are some additional selection related options besides &amp;quot;Select All&amp;quot; and &amp;quot;Deselect All&amp;quot;. Selecting or deselecting a bunch of items in a row can be achieved by holding shift and first clicking on the first required item and then clicking on the last required item.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Performing actions on selected items ==&lt;br /&gt;
&lt;br /&gt;
The following actions are currently available in Multi Select mode:&lt;br /&gt;
* Copy / Paste&lt;br /&gt;
* Download Branches&lt;br /&gt;
* Discard Content&lt;br /&gt;
* Delete Content&lt;br /&gt;
* Download and Checkout (*)&lt;br /&gt;
* Checkout (*)&lt;br /&gt;
* Release (*)&lt;br /&gt;
* Revert local changes (*)&lt;br /&gt;
&lt;br /&gt;
Actions marked with (*) are currently not presented in the standard Mobile UI. But they can be easily customized in XAML code with the following commands.&lt;br /&gt;
&lt;br /&gt;
=== Copy and paste ===&lt;br /&gt;
To copy multiple branches, the &amp;lt;code&amp;gt;ListViewModel.BulkOperation.CopyBranchesCommand&amp;lt;/code&amp;gt; can be used without any additional CommandParameters.&lt;br /&gt;
The &amp;lt;code&amp;gt;ContentViewModel.PasteBranchCommand&amp;lt;/code&amp;gt; already supports pasting multiple branches, therefore, it can be used to paste the previously copied objects. To clarify, the UI (Mobile &amp;amp; UWP) does not include pasting content into the selected objects, rather pasting multiple, previously copied branches into one object. This can be done eg. via the Paste option in the Context Menu.&lt;br /&gt;
&lt;br /&gt;
=== Download branches ===&lt;br /&gt;
To download multiple branches, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; with a KeyValueList containing &amp;lt;code&amp;gt;Key=&amp;quot;Command&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Value=&amp;quot;BranchDownloadCommand&amp;quot;&amp;lt;/code&amp;gt; as CommandParameter can be used.&lt;br /&gt;
&lt;br /&gt;
=== Discard content ===&lt;br /&gt;
To discard selected objects, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; with a KeyValueList containing &amp;lt;code&amp;gt;Key=&amp;quot;Command&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Value=&amp;quot;DiscardContentCommand&amp;quot;&amp;lt;/code&amp;gt; as CommandParameter can be used.&lt;br /&gt;
&lt;br /&gt;
=== Delete content ===&lt;br /&gt;
To delete selected objects, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; with a KeyValueList containing &amp;lt;code&amp;gt;Key=&amp;quot;Command&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Value=&amp;quot;DeleteContentCommand&amp;quot;&amp;lt;/code&amp;gt; as CommandParameter can be used.&lt;br /&gt;
&lt;br /&gt;
=== Download and checkout ===&lt;br /&gt;
This can be achieved by using the command for downloading, just with an additional KeyValueParameter to set the &amp;lt;code&amp;gt;Key=&amp;quot;CheckOut&amp;quot;&amp;lt;/code&amp;gt; to &amp;quot;True&amp;quot; as CommandParameter:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button ... Command=&amp;quot;{Binding ListViewModel.BulkOperation.InvokeOnItemsCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;BranchDownloadCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;CheckOut&amp;quot; Value=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkout ===&lt;br /&gt;
To checkout selected objects, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; with a KeyValueList containing &amp;lt;code&amp;gt;Key=&amp;quot;Command&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Value=&amp;quot;CheckOutContentCommand&amp;quot;&amp;lt;/code&amp;gt; as CommandParameter can be used.&lt;br /&gt;
&lt;br /&gt;
=== Release ===&lt;br /&gt;
To release selected objects, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; with a KeyValueList containing &amp;lt;code&amp;gt;Key=&amp;quot;Command&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Value=&amp;quot;ReleaseContentCommand&amp;quot;&amp;lt;/code&amp;gt; as CommandParameter can be used.&lt;br /&gt;
&lt;br /&gt;
=== Revert local changes ===&lt;br /&gt;
To revert local changes on objects, &amp;lt;code&amp;gt;ListViewModel.BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; with a KeyValueList containing &amp;lt;code&amp;gt;Key=&amp;quot;Command&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Value=&amp;quot;RevertLocalChangesCommand&amp;quot;&amp;lt;/code&amp;gt; as CommandParameter can be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editing common properties of selected items (UWP only) ==&lt;br /&gt;
&lt;br /&gt;
When selecting or deselecting objects, the commonly shared properties on the left side are constantly updated during that process.&lt;br /&gt;
&lt;br /&gt;
{{Hint|For such a property, if all selected objects share the same property value, that value is displayed as it is; Otherwise, &amp;quot;...&amp;quot; is displayed to indicate the presence of various values.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a user clicks/taps on such a property, an editor dialog is shown and the user can enter values just like when editing properties of single objects. However, when the user finishes editing and confirms the dialog, the value is saved to that property of all selected objects immediately.&lt;br /&gt;
&lt;br /&gt;
{{Hint|If the property being edited has various values, a default value (instead of the actual ones) is shown in the editor. E.g. empty for string type, false for boolean type, etc.}}&lt;br /&gt;
&lt;br /&gt;
Further editing of Link properties is currently not supported for multiple objects. Although the related button in the Guid editor dialog is clickable, it is currently inoperable. Also the ''Skipping the dialog'' feature (see [https://wiki.augmensys.com/index.php?title=Editors#Guid_editor| Guid Editor Wiki]) is currently not supported in Multi Select mode.&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
{{Attention|Mass editing is currently not supported for Properties containing [[UBIK_Active_Lists|Active Lists]].}}&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Multi Select (UBIK Client)]]&lt;br /&gt;
[[Category:Mobile|Multi Select (UBIK Client)]]&lt;br /&gt;
[[Category:Version 4.3|Multi Select (UBIK Client)]]&lt;br /&gt;
[[Category:WinX|Mass Edit (UBIK WinX)]]&lt;br /&gt;
[[Category:XAML|Multi Select (UBIK Client)]]&lt;br /&gt;
&lt;br /&gt;
== Multi select for filtered lists ==&lt;br /&gt;
&lt;br /&gt;
In the standard UI, multi selection targets the original unfiltered lists. However, those lists are often presented in several filtered lists in many cases. See content filtering in [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|UWP]] and in [[Xamarin_XAML#Content_filtering|Mobile]].&lt;br /&gt;
&lt;br /&gt;
The multi select related XAML code (essentially &amp;lt;code&amp;gt;ListViewModel.BulkOperation&amp;lt;/code&amp;gt;) in the standard UI can not be used directly in such scenarios. Because all filtered lists share the same original source list (&amp;lt;code&amp;gt;ListViewModel&amp;lt;/code&amp;gt;). If the multi select feature is turned on from the original source list, all filtered lists will be affected.&lt;br /&gt;
&lt;br /&gt;
For example, a source list can be divided into two filtered lists, one for finished tasks and the other for the unfinished ones. If you use the &amp;lt;code&amp;gt;ListViewModel.BulkOperation.SelectAllCommand&amp;lt;/code&amp;gt;, it will select all tasks even though in the UI it will appear as if only those finished/unfinished are selected.&lt;br /&gt;
&lt;br /&gt;
To avoid such a situation, the multi select feature should be turned on from the filtered lists instead. This means the following types:&lt;br /&gt;
* UWP: ListCollectionView;&lt;br /&gt;
* Mobile: SfDataSourceExt.&lt;br /&gt;
&lt;br /&gt;
Here's also an example of multi select related XAML code adapted for a filtered list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid&lt;br /&gt;
     xmlns:cv=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&lt;br /&gt;
     xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
     xmlns:interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&lt;br /&gt;
     xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
      &amp;lt;x:String x:Key=&amp;quot;FilterExpression&amp;quot;&amp;gt;Item.Header.ToLower().Contains(&amp;amp;quot;1&amp;amp;quot;)==true&amp;lt;/x:String&amp;gt;&lt;br /&gt;
      &amp;lt;cv:ListCollectionView x:Key=&amp;quot;FilteredList&amp;quot; Expression=&amp;quot;{StaticResource FilterExpression}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;!--  Multi Select Panel  --&amp;gt;&lt;br /&gt;
    &amp;lt;ContentControl&lt;br /&gt;
        ...&lt;br /&gt;
        ContentTemplate=&amp;quot;{Binding TemplateService[UBIKMultiSelectPanel]}&amp;quot;&lt;br /&gt;
        DataContext=&amp;quot;{StaticResource FilteredList}&amp;quot;&lt;br /&gt;
        Visibility=&amp;quot;{Binding BulkOperation.ItemSelectionMode, Source={StaticResource FilteredList}, Converter={StaticResource EqualToVisConverter}, ConverterParameter=Multiple, FallbackValue=Collapsed, TargetNullValue=Collapsed}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentControl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;!--  Filtered List  --&amp;gt;&lt;br /&gt;
    &amp;lt;controls:SelectionBoundListView&lt;br /&gt;
        IsItemClickEnabled=&amp;quot;False&amp;quot;&lt;br /&gt;
        ItemsSource=&amp;quot;{StaticResource FilteredList}&amp;quot;&lt;br /&gt;
        SelectionMode=&amp;quot;{Binding BulkOperation.ItemSelectionMode, Source={StaticResource FilteredList}, Converter={StaticResource ChildItemSelectionModeToListViewSelectionModeConverter}}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;SelectionChanged&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding BulkOperation.ItemSelectionChangedCommand, Source={StaticResource FilteredList}}&amp;quot; InputConverter=&amp;quot;{StaticResource SelectionChangedEventArgsConverter}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
      &amp;lt;/interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/controls:SelectionBoundListView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;!--  Multi Select Toggle Button  --&amp;gt;&lt;br /&gt;
    &amp;lt;Button&lt;br /&gt;
        ...&lt;br /&gt;
        Command=&amp;quot;{Binding BulkOperation.ToggleMultiSelectCommand, Source={StaticResource FilteredList}}&amp;quot;&lt;br /&gt;
        Visibility=&amp;quot;{Binding BulkOperation.ItemSelectionMode, Source={StaticResource FilteredList}, Converter={StaticResource EqualToVisConverter}, ConverterParameter=None}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid&lt;br /&gt;
     xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
     xmlns:behaviors=&amp;quot;clr-namespace:UBIK.CPL.Behaviors;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;ResourceDictionary&amp;gt;&lt;br /&gt;
            &amp;lt;x:String x:Key=&amp;quot;Expresssion&amp;quot;&amp;gt;Item.Header.ToLower().Contains(&amp;amp;quot;1&amp;amp;quot;)==false&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt x:Key=&amp;quot;FilteredList&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; Unloaded=&amp;quot;{Binding SkipFiltering}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;!-- Filtered List --&amp;gt;&lt;br /&gt;
    &amp;lt;controls:SfListViewExt&lt;br /&gt;
        ...&lt;br /&gt;
        ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource FilteredList}}&amp;quot;&lt;br /&gt;
        SelectionGesture=&amp;quot;Tap&amp;quot;&lt;br /&gt;
        SelectionMode=&amp;quot;{Binding BulkOperation.ItemSelectionMode, Source={StaticResource FilteredList}, Converter={StaticResource SelectionModeConverter}}&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;controls:SfListViewExt.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:EventHandlerBehavior EventName=&amp;quot;SelectionChanged&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:InvokeCommandAction Command=&amp;quot;{Binding BulkOperation.ItemSelectionChangedCommand, Source={StaticResource FilteredList}}&amp;quot; Converter=&amp;quot;{StaticResource SelectionChangedEventArgsConverter}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:EventHandlerBehavior&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;behaviors:EventHandlerBehavior EventName=&amp;quot;ItemHolding&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:InvokeCommandAction Command=&amp;quot;{Binding BulkOperation.ToggleMultiSelectCommand, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:EventHandlerBehavior&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:SfListViewExt.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/controls:SfListViewExt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;!-- Multi Select Panel --&amp;gt;&lt;br /&gt;
    &amp;lt;ContentView&lt;br /&gt;
        ...&lt;br /&gt;
        BindingContext=&amp;quot;{StaticResource FilteredList}&amp;quot;&lt;br /&gt;
        ControlTemplate=&amp;quot;{StaticResource UBIKMultiSelectTemplate}&amp;quot;&lt;br /&gt;
        IsVisible=&amp;quot;{Binding BulkOperation.ItemSelectionMode, Converter={StaticResource EqualityToBool}, ConverterParameter=Multiple, FallbackValue=false, TargetNullValue=false}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The critical part is that wherever the &amp;lt;code&amp;gt;BulkOperation&amp;lt;/code&amp;gt; property is accessed, it must be accessed from the &amp;lt;code&amp;gt;FilteredList&amp;lt;/code&amp;gt;, not the original unfiltered &amp;lt;code&amp;gt;Children.Items&amp;lt;/code&amp;gt; collection. When all references have been updated, the only remaining reference to 'Children' should be in FilteredList, as the ItemsSource attribute.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Multi Select (UBIK Client)]]&lt;br /&gt;
[[Category:Mobile|Multi Select (UBIK Client)]]&lt;br /&gt;
[[Category:Version 4.3|Multi Select (UBIK Client)]]&lt;br /&gt;
[[Category:WinX|Mass Edit (UBIK WinX)]]&lt;br /&gt;
[[Category:XAML|Multi Select (UBIK Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29602</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29602"/>
				<updated>2026-03-17T12:21:02Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Image Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. On WinX, the display mode for documents can be configured by selecting the corresponding button; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png|thumb|Display mode selection (WinX)]]&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document thumbnail navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail (WinX). This will open the document in an external editor provided by the operating system.&lt;br /&gt;
To open the document externally on the mobile client, the left-swipe functionality on the document object can be used to reveal the &amp;quot;open external&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;80&amp;quot;&amp;gt;&lt;br /&gt;
File:EditingMAUI.jpeg|Open external button in the document item's left-swipe menu (Mobile Client)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|Annotation toolbar on WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Annotation toolbar on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;350&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewerButton_WinX.png|Open external button on WinX Client&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When navigating to an image object, the image editor opens automatically if configured.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29601</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29601"/>
				<updated>2026-03-17T12:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Viewing Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. On WinX, the display mode for documents can be configured by selecting the corresponding button; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png|thumb|Display mode selection (WinX)]]&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document thumbnail navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail (WinX). This will open the document in an external editor provided by the operating system.&lt;br /&gt;
To open the document externally on the mobile client, the left-swipe functionality on the document object can be used to reveal the &amp;quot;open external&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;80&amp;quot;&amp;gt;&lt;br /&gt;
File:EditingMAUI.jpeg|Open external button in the document item's left-swipe menu (Mobile Client)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|Annotation toolbar on WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Annotation toolbar on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;350&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewerButton_WinX.png|Open external button on WinX Client&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29600</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29600"/>
				<updated>2026-03-17T12:14:46Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Editing{{Version/WinXSince|2.5.4}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. On WinX, the display mode for documents can be configured by selecting the corresponding button; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png|thumb|Display mode selection (WinX)]]&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document thumbnail navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|Annotation toolbar on WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Annotation toolbar on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;350&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewerButton_WinX.png|Open external button on WinX Client&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29599</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29599"/>
				<updated>2026-03-17T11:58:53Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Modify Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. On WinX, the display mode for documents can be configured by selecting the corresponding button; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png|thumb|Display mode selection (WinX)]]&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document thumbnail navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|Annotation toolbar on WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Annotation toolbar on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor (WinX). To open the document externally in order to start editing on the mobile client you have to use the left-swipe functionality on the document object. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;350&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:EditingMAUI.jpeg|Open external button Mobile Client&lt;br /&gt;
File:DocumentViewerButton_WinX.png|Open external button WinX Client&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29598</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29598"/>
				<updated>2026-03-17T11:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Modify Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. On WinX, the display mode for documents can be configured by selecting the corresponding button; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png|thumb|Display mode selection (WinX)]]&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document thumbnail navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|Annotation toolbar on WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Annotation toolbar on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor (WinX). To start editing on the mobile client you have to use the left-swipe functionality on the object. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
[[File:EditingMAUI.jpeg|350px|Left-swipe button Mobile Client]]&lt;br /&gt;
[[File:DocumentViewerButton_WinX.png|350px|Left-swipe button WinX Client]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29597</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29597"/>
				<updated>2026-03-17T11:27:45Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Viewing Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. On WinX, the display mode for documents can be configured by selecting the corresponding button; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png|thumb|Display mode selection (WinX)]]&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document thumbnail navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; heights=&amp;quot;350&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor (WinX). To start editing on the mobile client you have to use the left-swipe functionality on the object. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
[[File:EditingMAUI.jpeg|350px|Left-swipe button Mobile Client]]&lt;br /&gt;
[[File:DocumentViewerButton_WinX.png|350px|Left-swipe button WinX Client]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29596</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29596"/>
				<updated>2026-03-17T11:13:25Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Redlining */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on MAUI (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On WinX, the display mode for documents can be configured; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;250&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;50&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor (WinX). To start editing on the mobile client you have to use the left-swipe functionality on the object. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
[[File:EditingMAUI.jpeg|350px|Left-swipe button Mobile Client]]&lt;br /&gt;
[[File:DocumentViewerButton_WinX.png|350px|Left-swipe button WinX Client]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29595</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29595"/>
				<updated>2026-03-17T11:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Viewing or Editing the Object Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|Thumbnail preview on WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|Thumbnail preview on MAUI (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On WinX, the display mode for documents can be configured; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|Document Viewer on WinX Client&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Document Viewer on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&lt;br /&gt;
=== Viewing or Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. The way properties are displayed depends on the client being used. On the '''WinX''' client, the properties are shown directly on the right side of the document viewer. On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;250&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|Document properties on WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Document properties on Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail or clicking on the &amp;quot;open external&amp;quot; button inside of the document viewer, which immediately opens the document in an external editor (WinX). To start editing on the mobile client you have to use the left-swipe functionality on the object. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
[[File:EditingMAUI.jpeg|350px|Left-swipe button Mobile Client]]&lt;br /&gt;
[[File:DocumentViewerButton_WinX.png|350px|Left-swipe button WinX Client]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|ImageEditor on WinX Client&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|ImageEditor on Mobile Client (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29552</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29552"/>
				<updated>2026-03-12T08:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Viewing Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|MAUI (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On WinX, the display mode for documents can be configured; available display modes are: &amp;lt;br&amp;gt;&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|WinX&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&lt;br /&gt;
=== Viewing/Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. To access them, click on the document object.&lt;br /&gt;
&lt;br /&gt;
The way properties are displayed depends on the client being used.&lt;br /&gt;
&lt;br /&gt;
On the '''WinX''' client, the properties are shown directly on the right side of the screen.&lt;br /&gt;
&lt;br /&gt;
On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which immediately opens the document in an external editor. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
The editor provides several options for modifying the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|WinX&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29551</id>
		<title>Documents (Client)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Documents_(Client)&amp;diff=29551"/>
				<updated>2026-03-12T08:39:10Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[DOCUMENT|Documents]] are [[:Category:UBIK Object|{{UBIK}} objects]] referencing a file, e.g. a PDF document.&lt;br /&gt;
Like other {{UBIK}} objects, they can be synchronized to the {{UBIK}} client.&lt;br /&gt;
{{UBIK}} supports and displays document objects and a bunch of actions related to them, including e.g. editing, redlining, creation, and thumbnails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Document Types ==&lt;br /&gt;
&lt;br /&gt;
* Managed Document - Documents with a locally managed file.&lt;br /&gt;
* Linked Document - Documents with a file linked by an URL, not locally managed by {{UBIK}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Viewing Documents ==&lt;br /&gt;
&lt;br /&gt;
Available Documents can be viewed in the documents tab of the current object, they are displayed with a thumbnail preview. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentView_WinX.png|WinX&lt;br /&gt;
File:DocumentView_MAUI.jpeg|MAUI (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
On WinX, the display mode for documents can be configured, available display modes (WinX only): &amp;lt;br&amp;gt;&lt;br /&gt;
* Gallery View (default)&lt;br /&gt;
* List View&lt;br /&gt;
* Flip View&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DocumentView_DisplayMode.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Clicking on a document navigates to the corresponding object and opens the internal document viewer.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:DocumentViewer_WinX.png|WinX&lt;br /&gt;
File:DocumentViewer_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A document can also be viewed by right-clicking on the object's thumbnail. This will open the document in an external editor provided by the operating system.&lt;br /&gt;
In this way, the document can also be edited externally. For more details, see [[Documents_(Client)#Editing|Editing]].&lt;br /&gt;
&lt;br /&gt;
=== Viewing/Editing the Object Data ===&lt;br /&gt;
&lt;br /&gt;
Not only the file itself can be viewed, but also the {{UBIK}} property values of a document object. To access them, click on the document object.&lt;br /&gt;
&lt;br /&gt;
The way properties are displayed depends on the client being used.&lt;br /&gt;
&lt;br /&gt;
On the '''WinX''' client, the properties are shown directly on the right side of the screen.&lt;br /&gt;
&lt;br /&gt;
On the '''Mobile''' client, you need to switch to the Properties tab to view them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Properties_WinX.png|WinX&lt;br /&gt;
File:Properties_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating Documents ==&lt;br /&gt;
Depending on the configuration of the {{UBIK}} data model and the [[ACM]], documents can be created as children for existing objects.&lt;br /&gt;
Via the context menu entry you can create such documents. (where it is configured)&lt;br /&gt;
&lt;br /&gt;
{{Attention|File extensions are case-sensitive depending on the OS. On iOS and Android, file systems are case-sensitive, while on Windows, file systems are case-insensitive.}}&lt;br /&gt;
&lt;br /&gt;
=== Taking a Picture ===&lt;br /&gt;
In certain cases, the camera can be used to take a picture and create a document for it - in this case, another &amp;quot;Take Picture&amp;quot; context menu entry is available.&lt;br /&gt;
&lt;br /&gt;
=== Editing and Submitting the newly created Document ===&lt;br /&gt;
After either a document was chosen or a picture was taken, the newly created object is opened in a property view, allowing the user to abort the creation or to enter specific property values (e.g. for the description of the object) and finally save the object.&lt;br /&gt;
&lt;br /&gt;
{{Version/WinXSince|3.6}} uploaded Document objects can potentially  contain [[SYSCLS_FILEDETAILSCLASSIFICATION|detailed Information]] concerning the original file (e.g. file name, path)&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
=== File upload ===&lt;br /&gt;
Regarding the file upload, there is a mechanism [[File_Upload_Size_Restriction|FileUploadRestriction]] that ensures files only get uploaded if the file size is below the configured max upload size.&lt;br /&gt;
&lt;br /&gt;
=== Synchronization ===&lt;br /&gt;
Depending on the connectivity mode, the next synchronization run will bring the new content and file to the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modify Documents ==&lt;br /&gt;
&lt;br /&gt;
=== Redlining ===&lt;br /&gt;
[[HowTo:Make_a_Document_ready_for_Redlining|Redlining]] is the process of creating a modified or annotated version of an existing document.&lt;br /&gt;
&lt;br /&gt;
To use this feature, click the “Annotation Tools” button in the document viewer toolbar at the top of the document.&lt;br /&gt;
&lt;br /&gt;
After clicking “Annotation Tools”, the toolbar expands and provides several options for annotating the document, such as drawing freeform shapes, adding comments, selecting different colors ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:Annotation_WinX.png|WinX&lt;br /&gt;
File:Annotation_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous redlining number indicators are replaced by the [[Child_Document_Indicator_(Android)|child document indicators]]. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
=== Editing{{Version/WinXSince|2.5.4}} ===&lt;br /&gt;
[[File:Editing_WinX.png|Button to edit a document]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the top app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which immediately opens the document in an external editor. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Image Editor ==&lt;br /&gt;
In {{UBIK}}, images can be edited using the UBIKImageEditor. When you navigate in a image object, the image editor opens automatically. (if configured)&lt;br /&gt;
&lt;br /&gt;
The editor provides several options for modifying the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;400&amp;quot;&amp;gt;&lt;br /&gt;
File:ImageEditor_WInX.png|WinX&lt;br /&gt;
File:ImageEditor_MAUI.jpeg|Mobile (iOS)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PDF Documents ==&lt;br /&gt;
&lt;br /&gt;
=== PDF Renderers  {{Version/WinXSince|4.6.0}} ===&lt;br /&gt;
The Syncfusion PDF control embedded in the WinX client can use two different renderers to render and display PDF documents.&lt;br /&gt;
* The standard Syncfusion renderer which uses [https://learn.microsoft.com/en-us/uwp/api/windows.data.pdf?view=winrt-26100 Windows.Data.PDF]&lt;br /&gt;
* [https://pdfium.googlesource.com/pdfium/ PDFium]&lt;br /&gt;
There can be issues for each renderer when dealing with certain documents. If that's the case, you can try changing the [[Settings#Content|PdfRenderer setting]] in the WinX client and see if the issue still persists.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Generally speaking, the PDFium renderer seems to be more performant in the majority cases. That's why it is the default option.}}&lt;br /&gt;
&lt;br /&gt;
==== Syncfusion ====&lt;br /&gt;
When using this renderer, we have experienced an issue with certain PDF diagrams where certain texts change when you zoom in on the documents. Unfortunately, we are unaware of the reason of this issue and could not find public documentation on similar problems.&lt;br /&gt;
&lt;br /&gt;
==== PDFium ====&lt;br /&gt;
* This renderer currently does not support digital signatures (e.g. created by [https://www.docusign.com Docusign]) unless they are flattened into the PDF documents.&lt;br /&gt;
* With this renderer selected, some documents in the Flip View might appear blank when zooming.&lt;br /&gt;
&lt;br /&gt;
=== PDF Text Search ===&lt;br /&gt;
It is possible to search and highlight arbitrary texts in the {{UBIK}} PDF viewer. By clicking the magnifier button, an input field opens to search for specific text entries in the document. The results will be highlighted in the PDF file. By clicking the arrow buttons, it is possible to switch to the next and previous results.  {{Version/XamarinSince|4.3.0}}&lt;br /&gt;
&lt;br /&gt;
==== Automatic Text Search {{Version/XamarinSince|4.4.0}}{{Version/WinXSince|4.4.0}} ====&lt;br /&gt;
Using the [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION|Document Highlighting Classification]] A PDF document can search for a defined search term from its parents properties automatically as soon as it is being navigated to.&lt;br /&gt;
&lt;br /&gt;
=== Remember Document Settings {{Version/WinXSince|4.9}} ===&lt;br /&gt;
By default, PDFViewer settings are not saved and always reset when reloading a document. The Remember Document Settings feature enables the automatic saving &amp;amp; preserving of the Zoom level, Annotation color, and Stroke width value within a {{UBIK}} session.&lt;br /&gt;
It can be configured in the [[Settings#Content|Settings]].&lt;br /&gt;
With this feature enabled, the PDFViewers Annotation color, Zoom level, and Stroke width value set by the user will be saved and preserved until the user changes them again.&lt;br /&gt;
&lt;br /&gt;
If a document is configured with the [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|Auto Zoom classification]], it will be overruled by the user's value as soon as the user sets it.&lt;br /&gt;
If an [[XAML#UBIKPdfViewer|AnnotationDefaultStrokeWidth]] value is configured, it will be overridden by the user's value as soon as the user sets it.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Saving the Zoom value with touch gestures is not supported. But the SaveZoomSettingsCommand can be used to save the Zoom value manually.}}&lt;br /&gt;
&lt;br /&gt;
The SaveZoomSettingsCommand can be applied to a button as follows:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pdfViewer:SfPdfViewerControl&lt;br /&gt;
      Name=&amp;quot;pdfViewer&amp;quot;&lt;br /&gt;
      ... /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
      Content=&amp;quot;Save Zoom&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding ElementName=PdfViewer, Path=SaveZoomSettingsCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fit Mode{{Version/WinXSince|3.5}} ===&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !!&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_UWP_Fit_Mode_Default.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Container.png|240x225px]] || [[File:UI_UWP_Fit_Mode_Width.png|240x225px]] &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
&lt;br /&gt;
=== Auto zoom {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ===&lt;br /&gt;
When a PDF document is displayed in UBIK, it's possible that [[SYSCLS_AUTO_ZOOM_CLASSIFICATION|an initial zoom level]] is configured and applied to that document.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The configured initial zoom level will be simply ignored if it's beyond the acceptable min/max zoom levels of the PDF viewer.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Offline/Online ==&lt;br /&gt;
&lt;br /&gt;
=== Offline availability ===&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
=== Clear Online Documents ===&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime again when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[HowTo:Create_a_new_Document_(UBIK_Android)]]&lt;br /&gt;
* [[HowTo:Make_a_Document_ready_for_Redlining]]&lt;br /&gt;
* [[SYSCLS_DOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_FILEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_EDITABLEDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_REDLINEDFILE]] (Classification)&lt;br /&gt;
* [[SYSCLS_DOCUMENT_HIGHLIGHTING_CLASSIFICATION]] (Classification)&lt;br /&gt;
* [[SYSCLS_URLDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_THUMBNAILEDDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_TEXTDOCUMENT]] (Classification)&lt;br /&gt;
* [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT]] (Classification)&lt;br /&gt;
&lt;br /&gt;
[[Category:Android|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Client|Documents (Client)]]&lt;br /&gt;
[[Category:Document|Documents (UBIK Android)]]&lt;br /&gt;
[[Category:Mobile|Documents (Client)]]&lt;br /&gt;
[[Category:Pages with broken file links|Documents (Client)]]&lt;br /&gt;
[[Category:WinX|Documents (Client)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29426</id>
		<title>Version 5.1 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29426"/>
				<updated>2026-03-02T10:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|This version requires [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1809_(October_2018_Update) Windows 10 build 17763] or higher}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Store}}: Publicly available in Microsoft Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Store Beta}} / {{key press|Store Preview}}: Publicly available in Microsoft Store as beta or preview versions to those whose account email is participating in our beta or preview test. To join, please send an email to testing@augmensys.com and provide an email address to add to the list as well as the information which test you want to join. Alternatively you can contact the Augmensys staff and submit your chosen email address.&lt;br /&gt;
&lt;br /&gt;
Example: Please add my email account example@example.com to the '''Beta''' test group for the '''WinX''' client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
=== 5.1.?? on 2026-??-?? ===&lt;br /&gt;
* Replaced app closing after repeated failed login attempts with a client-side temporary login block, including user feedback that indicates when login becomes available again.&lt;br /&gt;
* Added French localization to the app.&lt;br /&gt;
* Provided a visual difference between suggested and actual values in DateTime and Geo property direct edit fields via a [[XAML#Custom_VisualState_Trigger|Custom VisualState Trigger]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5.1.6 on 2026-02-10 ===&lt;br /&gt;
* UBIK now uses industry-standard JSON Web Token (JWT) technology for authorization, enhancing security and reliability. Session tokens are transmitted via HTTP headers instead of URLs for improved protection.&lt;br /&gt;
* Added support for conditionally showing the ImageEditor Save button only when edits have been made, enabled when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
* Added support for [[File_Upload_Size_Restriction|configurable file-upload size restrictions]], preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* Fixed an issue where certain documents couldn't be loaded anymore.&lt;br /&gt;
* Fixed an issue where annotated image documents do not appear as changed until the UI refreshes.&lt;br /&gt;
* Fixed an issue where displayed file content does not update after you revert its changes.&lt;br /&gt;
* The UI now updates correctly after mass deletion in multi-selection mode.&lt;br /&gt;
* Fixed an issue where the UI did not update properly when committing a direct edit input task.&lt;br /&gt;
* Fixed an issue where toggling NA in the String Editor did not behave correctly.&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added a [[XAML#UBIKWebView|UBIKWebView]] control that includes a fix in the WebView2 where some links could not be opened.&lt;br /&gt;
* Fixed issue that caused input fields to be focused but not editable.&lt;br /&gt;
* Fixed an issue where document creation might not be properly enabled in certain customizing scenarios. For example, a media creation button might be disabled until a page refresh.&lt;br /&gt;
* Fixed an issue where batch creating documents (by multi selecting files to attach) can be interrupted if you leave the page.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Due to third-party limitations, the feature that shows the ImageEditor Save button only when edits have been made is only active when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
* When editing Guid Link properties, you can no longer further edit the filtering if there are predefined filter parameters (such as the [[Dynamic_Selective_List_(Client)#Dependency_property_values|dependency property values in dynamic selective lists]]). This is because those parameters are to be enforced by design and should not be changed by users. In the future, we might consider a finer level of control over which parameters can be edited in such cases.&lt;br /&gt;
* Free Text Annotations that where created in former sessions cannot be selected and therefore cannot be edited any more.&lt;br /&gt;
* There are still some [[Annotation_and_HotSpot#Known_issues|known issues with free text and text markup annotations]].&lt;br /&gt;
* Known issues regarding the [[Documents_(Client)#Remember_Document_Settings|Remember Document Settings]] feature:&lt;br /&gt;
** Saving the Zoom value via touch gestures is not supported.&lt;br /&gt;
** Due to a third-party framework issue it can't be guaranteed that saving the Zoom level is always working properly. We reported this issue and will update our solution as soon as it is resolved on their side.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29425</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29425"/>
				<updated>2026-03-02T10:24:50Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save button can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; &lt;br /&gt;
* The Annotation button can be hidden with AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The HS button can be hidden with HotspotButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The undo and redo operations can be turned on/off with IsUndoEnabled=&amp;quot;true/false&amp;quot;. The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}}&lt;br /&gt;
&lt;br /&gt;
* The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Double x:Key=&amp;quot;AnnotationDefaultStrokeWidth&amp;quot;&amp;gt;1&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.&lt;br /&gt;
* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.&lt;br /&gt;
* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKPdfViewer&lt;br /&gt;
    ...&lt;br /&gt;
    EnableSeparateInkStrokes=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKWebView {{Version/WinXSince|5.1}} ====&lt;br /&gt;
As there is a bug in the WebView2 (only in WinX/UWP) where specific links cannot be opened, we introduced the UBIKWebView, which contains a workaround for this issue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKWebView x:Name=&amp;quot;WebContent&amp;quot; Source=&amp;quot;{Binding DocumentViewModel.OnlineURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Working with Properties is a foundational role of the UI customizer. Be aware that the term can refer to various elements of a content object's datamodel, including details like its Title, SubTitle, UID, classification info, etc. However, this article deals specifically with '''content properties'''; those which are displayed under the Property tab in the UBIK client.&lt;br /&gt;
&lt;br /&gt;
=== Displaying Properties ===&lt;br /&gt;
Displaying with properties is an extremely common requirement in custom UIs. UBIK offers several different bindings, each with specific benefits. It may be enough to simply display the value of a simple string or numeric property somewhere in your UI, or else you might need to display complex properties or execute a certain property-based command. &lt;br /&gt;
&lt;br /&gt;
The table below clarifies the various functionalities and how they can best be used in different scenarios.&lt;br /&gt;
&lt;br /&gt;
It is important to note that for these bindings we are assuming a content viewmodel (ie. an object observed in the client, either after navigating to it, or else when viewing it as an item in the child list of another content object).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Collection !! {{Tooltip|Performance|Could rendering be slowed down by using this binding, especially on ItemTemplates used in a list of many items.}} !! {{Tooltip|Capability|Extent of the viewmodel accessed}} !! {{Tooltip|Lazy-Loaded|Loaded on-demand (vs. always present)}} &lt;br /&gt;
|-&lt;br /&gt;
| Values || Great || Very limited - Read only, Property value only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyItems || Good || Limited - Read only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyByName || Ok up to 5 uses || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Properties.XItems || Impacted || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Values[MP_PROPERTY] ====&lt;br /&gt;
* This is the most basic and performant way to bind to a property value. &lt;br /&gt;
* This collection simply displays the 'true' value of a property, meaning that it is only useful displaying for simple properties, such as String, Int, Dbl, unformatted DateTime, etc. Properties that have a DisplayValue that is different from their true value, such as GUIDs or selective list items with labels, are not best displayed using this binding.&lt;br /&gt;
* For complex iproperties, it can be still be used in the xaml for non-display purposes, such as in combination with converters or commands. It is immediately present on the most basic content viewmodel (the ContentListItemViewModels used by child lists) without having to be loaded, and remains the best choice in most cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't Do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Properties.AllItems[MP_GUID].Value}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Values[MP_GUID]}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PropertyItems[MP_PROPERTY]... ====&lt;br /&gt;
This collection can be used when the Value collection does not suffice for displaying appropriate values. This PropertyViewModel presents more options than the simple Values collection, however, &amp;lt;u&amp;gt;it should still only be used for displaying text in the UI&amp;lt;/u&amp;gt; as it bypasses the modern functionality offered by UBIK, such as user rights, locked states, etc.&lt;br /&gt;
&lt;br /&gt;
==== Properties.XItems[MP_PROPERTY]... ====&lt;br /&gt;
These collections were created as a response to the criticism that earlier collections like Values and PropertyItems did not expose enough of a content object's viewmodel to be useful to our ever more sophisticated custom UIs. These collections now provide the full PropertyViewModel, where all aspects of a property (including ''it's'' properties, such as Unit attached to Double, the seperate Min/Value/Max valueitems, Date and Time extracted from the DateTime property, Lon/Lat or Alt extracted from the Geo property, and many more) can be accessed in Bindings. &lt;br /&gt;
* However, the downside of accessing this huge viewmodel is the noticeable performance impact, as it loads all instances of properties for the context object, even though only one (MP_PROPERTY) is requested. This impact is felt especially when such as binding is used on an item template in a list with many content objects, of which each has many properties. &lt;br /&gt;
* These collections are [[Fast_Startup_(Client)|Lazy Loaded]]*, which means that they are not loaded by default, however, a single binding to that collection will load it. When used on an item template in a list, all viewmodels for all properties for all child items will simultaneously be loaded, leading to the performance impact described in this article.&lt;br /&gt;
* &amp;quot;Properties.XItems&amp;quot; is not a real collection. The most frequently used collections are Properties.AllItems, Properties.VisibleItems, Properties.EditableItems, and Properties.ImportantItems (properties which fall into the [[UBIK_WinX_Client_Basics#High_priority_properties|Priority threshold]]). The number of properties delivered to a content object in each collection (for example; all, 80%, 40% and 10%, respectively) is also a consideration when estimating the performance impact of binding to these collections; simply put, use the smallest collection possible where the desired property is consistently located.&lt;br /&gt;
&lt;br /&gt;
==== PropertyByName[MP_PROPERTY]... ==== &lt;br /&gt;
This collection was created to overcome the performance impact arising from using Properties.XItems, by individually loading the PropertyViewModel for the named property. However, note that the benefit only lasts while the binding is used sparingly; rendering performance will be roughly the same as loading the Properties collection after 3-5 uses on a single item template.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The Values[ ] collection delivers the property's value as a string. The equivalent for the other bindings (above shown as '...') is &amp;lt;code&amp;gt;{Binding Collection[PROPERTY_NAME].'''DisplayValue'''}&amp;lt;/code&amp;gt;, however, the capability of these viewmodels goes far beyond the DisplayValue. Use [[Developer_Mode]] to learn more.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== * Troubleshooting null property values ====&lt;br /&gt;
Because certain property collections are Lazy-loaded as described above, it may be the case that bindings to these properties appear null in certain circumstances, especially if the collection is loaded after the page is rendered, such as through a command or behavior. To troubleshoot this issue, you can ensure that the property collection is accessed during rendertime rather than runtime (simply put, while the page is being constructed rather than during normal use) by applying the same binding to, for example, a Label. This measure should still work if the Label is hidden from view using a visibility binding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing Properties ===&lt;br /&gt;
There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:&lt;br /&gt;
* [[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. &lt;br /&gt;
** It is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.&lt;br /&gt;
* Similarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.&lt;br /&gt;
** These two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.&lt;br /&gt;
** These commands can be seen in action as the standard UI for properties when clicking on the icon to trigger &amp;quot;indirect&amp;quot; editing for any individual metaproperty. &lt;br /&gt;
** Property changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.&lt;br /&gt;
* The [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible. Similarly, audio document creation requires a file type &amp;quot;*.wav&amp;quot; to be included in the selective list.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Filtering ==&lt;br /&gt;
Filtering of objects is a common requirement in UBIK projects. The table below shows the three main approaches, with the functionality each offers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Configuration/Requirements !! {{Tooltip|Persisted|Filter criteria are retained when navigating, or even closing the client.}}  !! {{Tooltip|Multiple/Complex Values|Multiple user inputs supported for a single filter property.}}  !! {{Tooltip|Property type|Data elements supported as filter properties.}} !! {{Tooltip|Possible Item Source|Collections supported as item sources.}}&lt;br /&gt;
|-&lt;br /&gt;
| Query || Fully defined on the server || Yes || Limited (DateTime, Dbl, Int) where a range is possible. || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}}, Documents&lt;br /&gt;
|-&lt;br /&gt;
| Property-Based Content Filters || Defined in XAML, requires custom  [[SYSCLS_CHILDAREATEMPLATE|Child Area template name]] || Yes || No || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}} only&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Filters || Fully defined in XAML || No || Yes || Any bindable data (eg. Content properties, metadefinitions, etc). || Content objects, Properties, Documents, etc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A [[Query]] is a container that delivers a defined collection of content objects. Properties can be added to the query to serve as filter criteria, where a user can perform their search by editing these properties. &lt;br /&gt;
&lt;br /&gt;
[[Property_Based_Content_Filters]] are a xaml-based customization that connects a user input control (usually a textbox) with a specific content property on the content object. This user input is converted into filter criteria and applied directly to the child list, where only matched objects are retained.&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Implement_Custom_Filtering|Dynamic Filtering]] is the most flexible, but also the most complex, method of XAML-based filtering. A set of [[EvalExpression|EvalExpressions]] converts user inputs into a complex filter string, which is then applied immediately to whichever ItemsSource is defined in the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]]/[[Xamarin_XAML#FeatureRelated|SfDataSourceExt]]. Note that in this approach, user inputs are not directly connected to any data, which means that reloading the page in any way (eg. by navigation) causes the input controls to return to their xaml-defined state.&lt;br /&gt;
&lt;br /&gt;
{{Attention|While any of the above approaches can be used, it is never recommended to mix approaches, as this causes multiple rounds of filtering per keystroke that will noticeably impact performance, especially when many objects and filters are involved!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Behaviors in style definitions ===&lt;br /&gt;
It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].&lt;br /&gt;
&lt;br /&gt;
For better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:&lt;br /&gt;
* When attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.&lt;br /&gt;
* Bindings work the same way in general. However, it's not possible to bind to named elements through the &amp;lt;code&amp;gt;&amp;quot;{Binding ElementName=someName, Path=...&amp;quot;&amp;lt;/code&amp;gt; syntax and there doesn't seem to be a way to achieve similar goals.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&lt;br /&gt;
xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
&amp;lt;Style x:Key=&amp;quot;UBIKNamePropertyGrid&amp;quot; TargetType=&amp;quot;Grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Setter Property=&amp;quot;behaviors:AttachBehavior.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
                &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; CommandParameter=&amp;quot;MP_NAME&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
    &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom VisualState Trigger  {{Version/WinXSince|5.1}} ===&lt;br /&gt;
The '''UBIKStateObserverTrigger''' (UWP only) is a custom State trigger that allows activating a Visual State based on a value. The trigger compares the '''StateObserver''' value with the specified '''ExpectedValue'''. If both values are equal, the corresponding VisualState becomes active. This enables clean, template-based UI state changes without attaching behaviors directly to controls. It is especially useful in scenarios where behaviors cannot be reused in styles due to framework limitations.&lt;br /&gt;
&lt;br /&gt;
Custom states should be placed in a separate VisualStateGroup. States within the same group are mutually exclusive. If combined with standard groups such as CommonStates (Normal, Focused, PointerOver, etc.), the custom state may be overridden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:trigger=&amp;quot;using:UBIK.WinX.Trigger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Style ...&amp;gt;&lt;br /&gt;
   &amp;lt;Setter Property=&amp;quot;Template&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
           &amp;lt;ControlTemplate&amp;gt;&lt;br /&gt;
                 &amp;lt;Grid x:Name=&amp;quot;ExampleGrid&amp;quot; /&amp;gt;&lt;br /&gt;
                 &amp;lt;VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
                       &amp;lt;VisualStateGroup x:Name=&amp;quot;CustomStates&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;VisualState x:Name=&amp;quot;CustomState&amp;quot;&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                         &amp;lt;trigger:UBIKStateObserverTrigger StateObserver=&amp;quot;{Binding ValueItem.PropertyValue.IsSuggestedValue}&amp;quot; ExpectedValue=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.Setters&amp;gt;&lt;br /&gt;
                                         &amp;lt;Setter Target=&amp;quot;ExampleGrid.Background&amp;quot; Value=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.Setters&amp;gt;&lt;br /&gt;
                              &amp;lt;/VisualState&amp;gt;&lt;br /&gt;
                       &amp;lt;/VisualStateGroup&amp;gt;&lt;br /&gt;
                 &amp;lt;/VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
           &amp;lt;/ControlTemplate&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentControl ===&lt;br /&gt;
In UWP XAML, one often uses a &amp;lt;code&amp;gt;&amp;lt;ContentControl  ... ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; to choose different templates depending on the binding context.&lt;br /&gt;
However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.&lt;br /&gt;
For such scenarios, we have created a UBIKContentControl. See the example below.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&amp;lt;controls:UBIKContentControl&lt;br /&gt;
    Content=&amp;quot;{Binding MROViewModel}&amp;quot;&lt;br /&gt;
    ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot;&lt;br /&gt;
    TemplateReselectTrigger=&amp;quot;{Binding IsLocked}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Custom Icons ==&lt;br /&gt;
Moved to article [[XAML_Tips#Custom_Icons]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Mobile and UWP ==&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Mobile, which is used to develop clients for three different platforms namely iOS, Android and Windows (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Maui in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and, in general, the internet can support you when searching e.g. for a control in Mobile that you used in UWP.&lt;br /&gt;
More specific documentations about Mobile Customizing can be found under [[Mobile XAML]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please consider that Mobile Windows is not an official product and therefore it can't be guaranteed that all our features work without issues.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29424</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29424"/>
				<updated>2026-03-02T08:58:11Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save button can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; &lt;br /&gt;
* The Annotation button can be hidden with AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The HS button can be hidden with HotspotButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The undo and redo operations can be turned on/off with IsUndoEnabled=&amp;quot;true/false&amp;quot;. The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}}&lt;br /&gt;
&lt;br /&gt;
* The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Double x:Key=&amp;quot;AnnotationDefaultStrokeWidth&amp;quot;&amp;gt;1&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.&lt;br /&gt;
* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.&lt;br /&gt;
* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKPdfViewer&lt;br /&gt;
    ...&lt;br /&gt;
    EnableSeparateInkStrokes=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKWebView {{Version/WinXSince|5.1}} ====&lt;br /&gt;
As there is a bug in the WebView2 (only in WinX/UWP) where specific links cannot be opened, we introduced the UBIKWebView, which contains a workaround for this issue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKWebView x:Name=&amp;quot;WebContent&amp;quot; Source=&amp;quot;{Binding DocumentViewModel.OnlineURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Working with Properties is a foundational role of the UI customizer. Be aware that the term can refer to various elements of a content object's datamodel, including details like its Title, SubTitle, UID, classification info, etc. However, this article deals specifically with '''content properties'''; those which are displayed under the Property tab in the UBIK client.&lt;br /&gt;
&lt;br /&gt;
=== Displaying Properties ===&lt;br /&gt;
Displaying with properties is an extremely common requirement in custom UIs. UBIK offers several different bindings, each with specific benefits. It may be enough to simply display the value of a simple string or numeric property somewhere in your UI, or else you might need to display complex properties or execute a certain property-based command. &lt;br /&gt;
&lt;br /&gt;
The table below clarifies the various functionalities and how they can best be used in different scenarios.&lt;br /&gt;
&lt;br /&gt;
It is important to note that for these bindings we are assuming a content viewmodel (ie. an object observed in the client, either after navigating to it, or else when viewing it as an item in the child list of another content object).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Collection !! {{Tooltip|Performance|Could rendering be slowed down by using this binding, especially on ItemTemplates used in a list of many items.}} !! {{Tooltip|Capability|Extent of the viewmodel accessed}} !! {{Tooltip|Lazy-Loaded|Loaded on-demand (vs. always present)}} &lt;br /&gt;
|-&lt;br /&gt;
| Values || Great || Very limited - Read only, Property value only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyItems || Good || Limited - Read only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyByName || Ok up to 5 uses || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Properties.XItems || Impacted || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Values[MP_PROPERTY] ====&lt;br /&gt;
* This is the most basic and performant way to bind to a property value. &lt;br /&gt;
* This collection simply displays the 'true' value of a property, meaning that it is only useful displaying for simple properties, such as String, Int, Dbl, unformatted DateTime, etc. Properties that have a DisplayValue that is different from their true value, such as GUIDs or selective list items with labels, are not best displayed using this binding.&lt;br /&gt;
* For complex iproperties, it can be still be used in the xaml for non-display purposes, such as in combination with converters or commands. It is immediately present on the most basic content viewmodel (the ContentListItemViewModels used by child lists) without having to be loaded, and remains the best choice in most cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't Do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Properties.AllItems[MP_GUID].Value}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Values[MP_GUID]}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PropertyItems[MP_PROPERTY]... ====&lt;br /&gt;
This collection can be used when the Value collection does not suffice for displaying appropriate values. This PropertyViewModel presents more options than the simple Values collection, however, &amp;lt;u&amp;gt;it should still only be used for displaying text in the UI&amp;lt;/u&amp;gt; as it bypasses the modern functionality offered by UBIK, such as user rights, locked states, etc.&lt;br /&gt;
&lt;br /&gt;
==== Properties.XItems[MP_PROPERTY]... ====&lt;br /&gt;
These collections were created as a response to the criticism that earlier collections like Values and PropertyItems did not expose enough of a content object's viewmodel to be useful to our ever more sophisticated custom UIs. These collections now provide the full PropertyViewModel, where all aspects of a property (including ''it's'' properties, such as Unit attached to Double, the seperate Min/Value/Max valueitems, Date and Time extracted from the DateTime property, Lon/Lat or Alt extracted from the Geo property, and many more) can be accessed in Bindings. &lt;br /&gt;
* However, the downside of accessing this huge viewmodel is the noticeable performance impact, as it loads all instances of properties for the context object, even though only one (MP_PROPERTY) is requested. This impact is felt especially when such as binding is used on an item template in a list with many content objects, of which each has many properties. &lt;br /&gt;
* These collections are [[Fast_Startup_(Client)|Lazy Loaded]]*, which means that they are not loaded by default, however, a single binding to that collection will load it. When used on an item template in a list, all viewmodels for all properties for all child items will simultaneously be loaded, leading to the performance impact described in this article.&lt;br /&gt;
* &amp;quot;Properties.XItems&amp;quot; is not a real collection. The most frequently used collections are Properties.AllItems, Properties.VisibleItems, Properties.EditableItems, and Properties.ImportantItems (properties which fall into the [[UBIK_WinX_Client_Basics#High_priority_properties|Priority threshold]]). The number of properties delivered to a content object in each collection (for example; all, 80%, 40% and 10%, respectively) is also a consideration when estimating the performance impact of binding to these collections; simply put, use the smallest collection possible where the desired property is consistently located.&lt;br /&gt;
&lt;br /&gt;
==== PropertyByName[MP_PROPERTY]... ==== &lt;br /&gt;
This collection was created to overcome the performance impact arising from using Properties.XItems, by individually loading the PropertyViewModel for the named property. However, note that the benefit only lasts while the binding is used sparingly; rendering performance will be roughly the same as loading the Properties collection after 3-5 uses on a single item template.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The Values[ ] collection delivers the property's value as a string. The equivalent for the other bindings (above shown as '...') is &amp;lt;code&amp;gt;{Binding Collection[PROPERTY_NAME].'''DisplayValue'''}&amp;lt;/code&amp;gt;, however, the capability of these viewmodels goes far beyond the DisplayValue. Use [[Developer_Mode]] to learn more.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== * Troubleshooting null property values ====&lt;br /&gt;
Because certain property collections are Lazy-loaded as described above, it may be the case that bindings to these properties appear null in certain circumstances, especially if the collection is loaded after the page is rendered, such as through a command or behavior. To troubleshoot this issue, you can ensure that the property collection is accessed during rendertime rather than runtime (simply put, while the page is being constructed rather than during normal use) by applying the same binding to, for example, a Label. This measure should still work if the Label is hidden from view using a visibility binding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing Properties ===&lt;br /&gt;
There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:&lt;br /&gt;
* [[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. &lt;br /&gt;
** It is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.&lt;br /&gt;
* Similarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.&lt;br /&gt;
** These two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.&lt;br /&gt;
** These commands can be seen in action as the standard UI for properties when clicking on the icon to trigger &amp;quot;indirect&amp;quot; editing for any individual metaproperty. &lt;br /&gt;
** Property changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.&lt;br /&gt;
* The [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible. Similarly, audio document creation requires a file type &amp;quot;*.wav&amp;quot; to be included in the selective list.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Filtering ==&lt;br /&gt;
Filtering of objects is a common requirement in UBIK projects. The table below shows the three main approaches, with the functionality each offers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Configuration/Requirements !! {{Tooltip|Persisted|Filter criteria are retained when navigating, or even closing the client.}}  !! {{Tooltip|Multiple/Complex Values|Multiple user inputs supported for a single filter property.}}  !! {{Tooltip|Property type|Data elements supported as filter properties.}} !! {{Tooltip|Possible Item Source|Collections supported as item sources.}}&lt;br /&gt;
|-&lt;br /&gt;
| Query || Fully defined on the server || Yes || Limited (DateTime, Dbl, Int) where a range is possible. || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}}, Documents&lt;br /&gt;
|-&lt;br /&gt;
| Property-Based Content Filters || Defined in XAML, requires custom  [[SYSCLS_CHILDAREATEMPLATE|Child Area template name]] || Yes || No || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}} only&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Filters || Fully defined in XAML || No || Yes || Any bindable data (eg. Content properties, metadefinitions, etc). || Content objects, Properties, Documents, etc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A [[Query]] is a container that delivers a defined collection of content objects. Properties can be added to the query to serve as filter criteria, where a user can perform their search by editing these properties. &lt;br /&gt;
&lt;br /&gt;
[[Property_Based_Content_Filters]] are a xaml-based customization that connects a user input control (usually a textbox) with a specific content property on the content object. This user input is converted into filter criteria and applied directly to the child list, where only matched objects are retained.&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Implement_Custom_Filtering|Dynamic Filtering]] is the most flexible, but also the most complex, method of XAML-based filtering. A set of [[EvalExpression|EvalExpressions]] converts user inputs into a complex filter string, which is then applied immediately to whichever ItemsSource is defined in the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]]/[[Xamarin_XAML#FeatureRelated|SfDataSourceExt]]. Note that in this approach, user inputs are not directly connected to any data, which means that reloading the page in any way (eg. by navigation) causes the input controls to return to their xaml-defined state.&lt;br /&gt;
&lt;br /&gt;
{{Attention|While any of the above approaches can be used, it is never recommended to mix approaches, as this causes multiple rounds of filtering per keystroke that will noticeably impact performance, especially when many objects and filters are involved!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Behaviors in style definitions ===&lt;br /&gt;
It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].&lt;br /&gt;
&lt;br /&gt;
For better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:&lt;br /&gt;
* When attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.&lt;br /&gt;
* Bindings work the same way in general. However, it's not possible to bind to named elements through the &amp;lt;code&amp;gt;&amp;quot;{Binding ElementName=someName, Path=...&amp;quot;&amp;lt;/code&amp;gt; syntax and there doesn't seem to be a way to achieve similar goals.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&lt;br /&gt;
xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
&amp;lt;Style x:Key=&amp;quot;UBIKNamePropertyGrid&amp;quot; TargetType=&amp;quot;Grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Setter Property=&amp;quot;behaviors:AttachBehavior.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
                &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; CommandParameter=&amp;quot;MP_NAME&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
    &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} ===&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
The '''UBIKStateObserverTrigger''' (UWP only) is a custom State trigger that allows activating a Visual State based on a value. The trigger compares the '''StateObserver''' value with the specified '''ExpectedValue'''. If both values are equal, the corresponding VisualState becomes active. This enables clean, template-based UI state changes without attaching behaviors directly to controls. It is especially useful in scenarios where behaviors cannot be reused in styles due to framework limitations.&lt;br /&gt;
&lt;br /&gt;
Custom states should be placed in a separate VisualStateGroup. States within the same group are mutually exclusive. If combined with standard groups such as CommonStates (Normal, Focused, PointerOver, etc.), the custom state may be overridden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:trigger=&amp;quot;using:UBIK.WinX.Trigger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Style ...&amp;gt;&lt;br /&gt;
   &amp;lt;Setter Property=&amp;quot;Template&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
           &amp;lt;ControlTemplate&amp;gt;&lt;br /&gt;
                 &amp;lt;Grid x:Name=&amp;quot;ExampleGrid&amp;quot; /&amp;gt;&lt;br /&gt;
                 &amp;lt;VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
                       &amp;lt;VisualStateGroup x:Name=&amp;quot;CustomStates&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;VisualState x:Name=&amp;quot;CustomState&amp;quot;&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                         &amp;lt;trigger:UBIKStateObserverTrigger StateObserver=&amp;quot;{Binding ValueItem.PropertyValue.IsSuggestedValue}&amp;quot; ExpectedValue=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.Setters&amp;gt;&lt;br /&gt;
                                         &amp;lt;Setter Target=&amp;quot;ExampleGrid.Background&amp;quot; Value=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.Setters&amp;gt;&lt;br /&gt;
                              &amp;lt;/VisualState&amp;gt;&lt;br /&gt;
                       &amp;lt;/VisualStateGroup&amp;gt;&lt;br /&gt;
                 &amp;lt;/VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
           &amp;lt;/ControlTemplate&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentControl ===&lt;br /&gt;
In UWP XAML, one often uses a &amp;lt;code&amp;gt;&amp;lt;ContentControl  ... ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; to choose different templates depending on the binding context.&lt;br /&gt;
However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.&lt;br /&gt;
For such scenarios, we have created a UBIKContentControl. See the example below.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&amp;lt;controls:UBIKContentControl&lt;br /&gt;
    Content=&amp;quot;{Binding MROViewModel}&amp;quot;&lt;br /&gt;
    ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot;&lt;br /&gt;
    TemplateReselectTrigger=&amp;quot;{Binding IsLocked}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Custom Icons ==&lt;br /&gt;
Moved to article [[XAML_Tips#Custom_Icons]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Mobile and UWP ==&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Mobile, which is used to develop clients for three different platforms namely iOS, Android and Windows (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Maui in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and, in general, the internet can support you when searching e.g. for a control in Mobile that you used in UWP.&lt;br /&gt;
More specific documentations about Mobile Customizing can be found under [[Mobile XAML]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please consider that Mobile Windows is not an official product and therefore it can't be guaranteed that all our features work without issues.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29416</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29416"/>
				<updated>2026-02-26T14:18:04Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save button can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; &lt;br /&gt;
* The Annotation button can be hidden with AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The HS button can be hidden with HotspotButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The undo and redo operations can be turned on/off with IsUndoEnabled=&amp;quot;true/false&amp;quot;. The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}}&lt;br /&gt;
&lt;br /&gt;
* The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Double x:Key=&amp;quot;AnnotationDefaultStrokeWidth&amp;quot;&amp;gt;1&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.&lt;br /&gt;
* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.&lt;br /&gt;
* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKPdfViewer&lt;br /&gt;
    ...&lt;br /&gt;
    EnableSeparateInkStrokes=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKWebView {{Version/WinXSince|5.1}} ====&lt;br /&gt;
As there is a bug in the WebView2 (only in WinX/UWP) where specific links cannot be opened, we introduced the UBIKWebView, which contains a workaround for this issue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKWebView x:Name=&amp;quot;WebContent&amp;quot; Source=&amp;quot;{Binding DocumentViewModel.OnlineURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Working with Properties is a foundational role of the UI customizer. Be aware that the term can refer to various elements of a content object's datamodel, including details like its Title, SubTitle, UID, classification info, etc. However, this article deals specifically with '''content properties'''; those which are displayed under the Property tab in the UBIK client.&lt;br /&gt;
&lt;br /&gt;
=== Displaying Properties ===&lt;br /&gt;
Displaying with properties is an extremely common requirement in custom UIs. UBIK offers several different bindings, each with specific benefits. It may be enough to simply display the value of a simple string or numeric property somewhere in your UI, or else you might need to display complex properties or execute a certain property-based command. &lt;br /&gt;
&lt;br /&gt;
The table below clarifies the various functionalities and how they can best be used in different scenarios.&lt;br /&gt;
&lt;br /&gt;
It is important to note that for these bindings we are assuming a content viewmodel (ie. an object observed in the client, either after navigating to it, or else when viewing it as an item in the child list of another content object).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Collection !! {{Tooltip|Performance|Could rendering be slowed down by using this binding, especially on ItemTemplates used in a list of many items.}} !! {{Tooltip|Capability|Extent of the viewmodel accessed}} !! {{Tooltip|Lazy-Loaded|Loaded on-demand (vs. always present)}} &lt;br /&gt;
|-&lt;br /&gt;
| Values || Great || Very limited - Read only, Property value only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyItems || Good || Limited - Read only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyByName || Ok up to 5 uses || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Properties.XItems || Impacted || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Values[MP_PROPERTY] ====&lt;br /&gt;
* This is the most basic and performant way to bind to a property value. &lt;br /&gt;
* This collection simply displays the 'true' value of a property, meaning that it is only useful displaying for simple properties, such as String, Int, Dbl, unformatted DateTime, etc. Properties that have a DisplayValue that is different from their true value, such as GUIDs or selective list items with labels, are not best displayed using this binding.&lt;br /&gt;
* For complex iproperties, it can be still be used in the xaml for non-display purposes, such as in combination with converters or commands. It is immediately present on the most basic content viewmodel (the ContentListItemViewModels used by child lists) without having to be loaded, and remains the best choice in most cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't Do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Properties.AllItems[MP_GUID].Value}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Values[MP_GUID]}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PropertyItems[MP_PROPERTY]... ====&lt;br /&gt;
This collection can be used when the Value collection does not suffice for displaying appropriate values. This PropertyViewModel presents more options than the simple Values collection, however, &amp;lt;u&amp;gt;it should still only be used for displaying text in the UI&amp;lt;/u&amp;gt; as it bypasses the modern functionality offered by UBIK, such as user rights, locked states, etc.&lt;br /&gt;
&lt;br /&gt;
==== Properties.XItems[MP_PROPERTY]... ====&lt;br /&gt;
These collections were created as a response to the criticism that earlier collections like Values and PropertyItems did not expose enough of a content object's viewmodel to be useful to our ever more sophisticated custom UIs. These collections now provide the full PropertyViewModel, where all aspects of a property (including ''it's'' properties, such as Unit attached to Double, the seperate Min/Value/Max valueitems, Date and Time extracted from the DateTime property, Lon/Lat or Alt extracted from the Geo property, and many more) can be accessed in Bindings. &lt;br /&gt;
* However, the downside of accessing this huge viewmodel is the noticeable performance impact, as it loads all instances of properties for the context object, even though only one (MP_PROPERTY) is requested. This impact is felt especially when such as binding is used on an item template in a list with many content objects, of which each has many properties. &lt;br /&gt;
* These collections are [[Fast_Startup_(Client)|Lazy Loaded]]*, which means that they are not loaded by default, however, a single binding to that collection will load it. When used on an item template in a list, all viewmodels for all properties for all child items will simultaneously be loaded, leading to the performance impact described in this article.&lt;br /&gt;
* &amp;quot;Properties.XItems&amp;quot; is not a real collection. The most frequently used collections are Properties.AllItems, Properties.VisibleItems, Properties.EditableItems, and Properties.ImportantItems (properties which fall into the [[UBIK_WinX_Client_Basics#High_priority_properties|Priority threshold]]). The number of properties delivered to a content object in each collection (for example; all, 80%, 40% and 10%, respectively) is also a consideration when estimating the performance impact of binding to these collections; simply put, use the smallest collection possible where the desired property is consistently located.&lt;br /&gt;
&lt;br /&gt;
==== PropertyByName[MP_PROPERTY]... ==== &lt;br /&gt;
This collection was created to overcome the performance impact arising from using Properties.XItems, by individually loading the PropertyViewModel for the named property. However, note that the benefit only lasts while the binding is used sparingly; rendering performance will be roughly the same as loading the Properties collection after 3-5 uses on a single item template.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The Values[ ] collection delivers the property's value as a string. The equivalent for the other bindings (above shown as '...') is &amp;lt;code&amp;gt;{Binding Collection[PROPERTY_NAME].'''DisplayValue'''}&amp;lt;/code&amp;gt;, however, the capability of these viewmodels goes far beyond the DisplayValue. Use [[Developer_Mode]] to learn more.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== * Troubleshooting null property values ====&lt;br /&gt;
Because certain property collections are Lazy-loaded as described above, it may be the case that bindings to these properties appear null in certain circumstances, especially if the collection is loaded after the page is rendered, such as through a command or behavior. To troubleshoot this issue, you can ensure that the property collection is accessed during rendertime rather than runtime (simply put, while the page is being constructed rather than during normal use) by applying the same binding to, for example, a Label. This measure should still work if the Label is hidden from view using a visibility binding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing Properties ===&lt;br /&gt;
There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:&lt;br /&gt;
* [[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. &lt;br /&gt;
** It is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.&lt;br /&gt;
* Similarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.&lt;br /&gt;
** These two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.&lt;br /&gt;
** These commands can be seen in action as the standard UI for properties when clicking on the icon to trigger &amp;quot;indirect&amp;quot; editing for any individual metaproperty. &lt;br /&gt;
** Property changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.&lt;br /&gt;
* The [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible. Similarly, audio document creation requires a file type &amp;quot;*.wav&amp;quot; to be included in the selective list.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Filtering ==&lt;br /&gt;
Filtering of objects is a common requirement in UBIK projects. The table below shows the three main approaches, with the functionality each offers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Configuration/Requirements !! {{Tooltip|Persisted|Filter criteria are retained when navigating, or even closing the client.}}  !! {{Tooltip|Multiple/Complex Values|Multiple user inputs supported for a single filter property.}}  !! {{Tooltip|Property type|Data elements supported as filter properties.}} !! {{Tooltip|Possible Item Source|Collections supported as item sources.}}&lt;br /&gt;
|-&lt;br /&gt;
| Query || Fully defined on the server || Yes || Limited (DateTime, Dbl, Int) where a range is possible. || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}}, Documents&lt;br /&gt;
|-&lt;br /&gt;
| Property-Based Content Filters || Defined in XAML, requires custom  [[SYSCLS_CHILDAREATEMPLATE|Child Area template name]] || Yes || No || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}} only&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Filters || Fully defined in XAML || No || Yes || Any bindable data (eg. Content properties, metadefinitions, etc). || Content objects, Properties, Documents, etc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A [[Query]] is a container that delivers a defined collection of content objects. Properties can be added to the query to serve as filter criteria, where a user can perform their search by editing these properties. &lt;br /&gt;
&lt;br /&gt;
[[Property_Based_Content_Filters]] are a xaml-based customization that connects a user input control (usually a textbox) with a specific content property on the content object. This user input is converted into filter criteria and applied directly to the child list, where only matched objects are retained.&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Implement_Custom_Filtering|Dynamic Filtering]] is the most flexible, but also the most complex, method of XAML-based filtering. A set of [[EvalExpression|EvalExpressions]] converts user inputs into a complex filter string, which is then applied immediately to whichever ItemsSource is defined in the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]]/[[Xamarin_XAML#FeatureRelated|SfDataSourceExt]]. Note that in this approach, user inputs are not directly connected to any data, which means that reloading the page in any way (eg. by navigation) causes the input controls to return to their xaml-defined state.&lt;br /&gt;
&lt;br /&gt;
{{Attention|While any of the above approaches can be used, it is never recommended to mix approaches, as this causes multiple rounds of filtering per keystroke that will noticeably impact performance, especially when many objects and filters are involved!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Behaviors in style definitions ===&lt;br /&gt;
It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].&lt;br /&gt;
&lt;br /&gt;
For better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:&lt;br /&gt;
* When attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.&lt;br /&gt;
* Bindings work the same way in general. However, it's not possible to bind to named elements through the &amp;lt;code&amp;gt;&amp;quot;{Binding ElementName=someName, Path=...&amp;quot;&amp;lt;/code&amp;gt; syntax and there doesn't seem to be a way to achieve similar goals.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&lt;br /&gt;
xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
&amp;lt;Style x:Key=&amp;quot;UBIKNamePropertyGrid&amp;quot; TargetType=&amp;quot;Grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Setter Property=&amp;quot;behaviors:AttachBehavior.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
                &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; CommandParameter=&amp;quot;MP_NAME&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
    &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} ===&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
The '''UBIKStateObserver''' (UWP only) is a custom State trigger that allows activating a Visual State based on a value. The trigger compares the '''StateObserver''' value with the specified '''ExpectedValue'''. If both values are equal, the corresponding VisualState becomes active. This enables clean, template-based UI state changes without attaching behaviors directly to controls. It is especially useful in scenarios where behaviors cannot be reused in styles due to framework limitations.&lt;br /&gt;
&lt;br /&gt;
Custom states should be placed in a separate VisualStateGroup. States within the same group are mutually exclusive. If combined with standard groups such as CommonStates (Normal, Focused, PointerOver, etc.), the custom state may be overridden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:trigger=&amp;quot;using:UBIK.WinX.Trigger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Style ...&amp;gt;&lt;br /&gt;
   &amp;lt;Setter Property=&amp;quot;Template&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
           &amp;lt;ControlTemplate&amp;gt;&lt;br /&gt;
                 &amp;lt;Grid x:Name=&amp;quot;ExampleGrid&amp;quot; /&amp;gt;&lt;br /&gt;
                 &amp;lt;VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
                       &amp;lt;VisualStateGroup x:Name=&amp;quot;CustomStates&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;VisualState x:Name=&amp;quot;CustomState&amp;quot;&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                         &amp;lt;trigger:UBIKStateObserver StateObserver=&amp;quot;{Binding ValueItem.PropertyValue.IsSuggestedValue}&amp;quot; ExpectedValue=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.Setters&amp;gt;&lt;br /&gt;
                                         &amp;lt;Setter Target=&amp;quot;ExampleGrid.Background&amp;quot; Value=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.Setters&amp;gt;&lt;br /&gt;
                              &amp;lt;/VisualState&amp;gt;&lt;br /&gt;
                       &amp;lt;/VisualStateGroup&amp;gt;&lt;br /&gt;
                 &amp;lt;/VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
           &amp;lt;/ControlTemplate&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentControl ===&lt;br /&gt;
In UWP XAML, one often uses a &amp;lt;code&amp;gt;&amp;lt;ContentControl  ... ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; to choose different templates depending on the binding context.&lt;br /&gt;
However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.&lt;br /&gt;
For such scenarios, we have created a UBIKContentControl. See the example below.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&amp;lt;controls:UBIKContentControl&lt;br /&gt;
    Content=&amp;quot;{Binding MROViewModel}&amp;quot;&lt;br /&gt;
    ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot;&lt;br /&gt;
    TemplateReselectTrigger=&amp;quot;{Binding IsLocked}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Custom Icons ==&lt;br /&gt;
Moved to article [[XAML_Tips#Custom_Icons]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Mobile and UWP ==&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Mobile, which is used to develop clients for three different platforms namely iOS, Android and Windows (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Maui in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and, in general, the internet can support you when searching e.g. for a control in Mobile that you used in UWP.&lt;br /&gt;
More specific documentations about Mobile Customizing can be found under [[Mobile XAML]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please consider that Mobile Windows is not an official product and therefore it can't be guaranteed that all our features work without issues.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29415</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29415"/>
				<updated>2026-02-26T14:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save button can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; &lt;br /&gt;
* The Annotation button can be hidden with AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The HS button can be hidden with HotspotButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The undo and redo operations can be turned on/off with IsUndoEnabled=&amp;quot;true/false&amp;quot;. The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}}&lt;br /&gt;
&lt;br /&gt;
* The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Double x:Key=&amp;quot;AnnotationDefaultStrokeWidth&amp;quot;&amp;gt;1&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.&lt;br /&gt;
* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.&lt;br /&gt;
* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKPdfViewer&lt;br /&gt;
    ...&lt;br /&gt;
    EnableSeparateInkStrokes=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKWebView {{Version/WinXSince|5.1}} ====&lt;br /&gt;
As there is a bug in the WebView2 (only in WinX/UWP) where specific links cannot be opened, we introduced the UBIKWebView, which contains a workaround for this issue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKWebView x:Name=&amp;quot;WebContent&amp;quot; Source=&amp;quot;{Binding DocumentViewModel.OnlineURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Working with Properties is a foundational role of the UI customizer. Be aware that the term can refer to various elements of a content object's datamodel, including details like its Title, SubTitle, UID, classification info, etc. However, this article deals specifically with '''content properties'''; those which are displayed under the Property tab in the UBIK client.&lt;br /&gt;
&lt;br /&gt;
=== Displaying Properties ===&lt;br /&gt;
Displaying with properties is an extremely common requirement in custom UIs. UBIK offers several different bindings, each with specific benefits. It may be enough to simply display the value of a simple string or numeric property somewhere in your UI, or else you might need to display complex properties or execute a certain property-based command. &lt;br /&gt;
&lt;br /&gt;
The table below clarifies the various functionalities and how they can best be used in different scenarios.&lt;br /&gt;
&lt;br /&gt;
It is important to note that for these bindings we are assuming a content viewmodel (ie. an object observed in the client, either after navigating to it, or else when viewing it as an item in the child list of another content object).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Collection !! {{Tooltip|Performance|Could rendering be slowed down by using this binding, especially on ItemTemplates used in a list of many items.}} !! {{Tooltip|Capability|Extent of the viewmodel accessed}} !! {{Tooltip|Lazy-Loaded|Loaded on-demand (vs. always present)}} &lt;br /&gt;
|-&lt;br /&gt;
| Values || Great || Very limited - Read only, Property value only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyItems || Good || Limited - Read only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyByName || Ok up to 5 uses || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Properties.XItems || Impacted || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Values[MP_PROPERTY] ====&lt;br /&gt;
* This is the most basic and performant way to bind to a property value. &lt;br /&gt;
* This collection simply displays the 'true' value of a property, meaning that it is only useful displaying for simple properties, such as String, Int, Dbl, unformatted DateTime, etc. Properties that have a DisplayValue that is different from their true value, such as GUIDs or selective list items with labels, are not best displayed using this binding.&lt;br /&gt;
* For complex iproperties, it can be still be used in the xaml for non-display purposes, such as in combination with converters or commands. It is immediately present on the most basic content viewmodel (the ContentListItemViewModels used by child lists) without having to be loaded, and remains the best choice in most cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't Do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Properties.AllItems[MP_GUID].Value}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Values[MP_GUID]}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PropertyItems[MP_PROPERTY]... ====&lt;br /&gt;
This collection can be used when the Value collection does not suffice for displaying appropriate values. This PropertyViewModel presents more options than the simple Values collection, however, &amp;lt;u&amp;gt;it should still only be used for displaying text in the UI&amp;lt;/u&amp;gt; as it bypasses the modern functionality offered by UBIK, such as user rights, locked states, etc.&lt;br /&gt;
&lt;br /&gt;
==== Properties.XItems[MP_PROPERTY]... ====&lt;br /&gt;
These collections were created as a response to the criticism that earlier collections like Values and PropertyItems did not expose enough of a content object's viewmodel to be useful to our ever more sophisticated custom UIs. These collections now provide the full PropertyViewModel, where all aspects of a property (including ''it's'' properties, such as Unit attached to Double, the seperate Min/Value/Max valueitems, Date and Time extracted from the DateTime property, Lon/Lat or Alt extracted from the Geo property, and many more) can be accessed in Bindings. &lt;br /&gt;
* However, the downside of accessing this huge viewmodel is the noticeable performance impact, as it loads all instances of properties for the context object, even though only one (MP_PROPERTY) is requested. This impact is felt especially when such as binding is used on an item template in a list with many content objects, of which each has many properties. &lt;br /&gt;
* These collections are [[Fast_Startup_(Client)|Lazy Loaded]]*, which means that they are not loaded by default, however, a single binding to that collection will load it. When used on an item template in a list, all viewmodels for all properties for all child items will simultaneously be loaded, leading to the performance impact described in this article.&lt;br /&gt;
* &amp;quot;Properties.XItems&amp;quot; is not a real collection. The most frequently used collections are Properties.AllItems, Properties.VisibleItems, Properties.EditableItems, and Properties.ImportantItems (properties which fall into the [[UBIK_WinX_Client_Basics#High_priority_properties|Priority threshold]]). The number of properties delivered to a content object in each collection (for example; all, 80%, 40% and 10%, respectively) is also a consideration when estimating the performance impact of binding to these collections; simply put, use the smallest collection possible where the desired property is consistently located.&lt;br /&gt;
&lt;br /&gt;
==== PropertyByName[MP_PROPERTY]... ==== &lt;br /&gt;
This collection was created to overcome the performance impact arising from using Properties.XItems, by individually loading the PropertyViewModel for the named property. However, note that the benefit only lasts while the binding is used sparingly; rendering performance will be roughly the same as loading the Properties collection after 3-5 uses on a single item template.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The Values[ ] collection delivers the property's value as a string. The equivalent for the other bindings (above shown as '...') is &amp;lt;code&amp;gt;{Binding Collection[PROPERTY_NAME].'''DisplayValue'''}&amp;lt;/code&amp;gt;, however, the capability of these viewmodels goes far beyond the DisplayValue. Use [[Developer_Mode]] to learn more.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== * Troubleshooting null property values ====&lt;br /&gt;
Because certain property collections are Lazy-loaded as described above, it may be the case that bindings to these properties appear null in certain circumstances, especially if the collection is loaded after the page is rendered, such as through a command or behavior. To troubleshoot this issue, you can ensure that the property collection is accessed during rendertime rather than runtime (simply put, while the page is being constructed rather than during normal use) by applying the same binding to, for example, a Label. This measure should still work if the Label is hidden from view using a visibility binding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing Properties ===&lt;br /&gt;
There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:&lt;br /&gt;
* [[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. &lt;br /&gt;
** It is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.&lt;br /&gt;
* Similarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.&lt;br /&gt;
** These two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.&lt;br /&gt;
** These commands can be seen in action as the standard UI for properties when clicking on the icon to trigger &amp;quot;indirect&amp;quot; editing for any individual metaproperty. &lt;br /&gt;
** Property changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.&lt;br /&gt;
* The [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible. Similarly, audio document creation requires a file type &amp;quot;*.wav&amp;quot; to be included in the selective list.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Filtering ==&lt;br /&gt;
Filtering of objects is a common requirement in UBIK projects. The table below shows the three main approaches, with the functionality each offers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Configuration/Requirements !! {{Tooltip|Persisted|Filter criteria are retained when navigating, or even closing the client.}}  !! {{Tooltip|Multiple/Complex Values|Multiple user inputs supported for a single filter property.}}  !! {{Tooltip|Property type|Data elements supported as filter properties.}} !! {{Tooltip|Possible Item Source|Collections supported as item sources.}}&lt;br /&gt;
|-&lt;br /&gt;
| Query || Fully defined on the server || Yes || Limited (DateTime, Dbl, Int) where a range is possible. || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}}, Documents&lt;br /&gt;
|-&lt;br /&gt;
| Property-Based Content Filters || Defined in XAML, requires custom  [[SYSCLS_CHILDAREATEMPLATE|Child Area template name]] || Yes || No || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}} only&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Filters || Fully defined in XAML || No || Yes || Any bindable data (eg. Content properties, metadefinitions, etc). || Content objects, Properties, Documents, etc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A [[Query]] is a container that delivers a defined collection of content objects. Properties can be added to the query to serve as filter criteria, where a user can perform their search by editing these properties. &lt;br /&gt;
&lt;br /&gt;
[[Property_Based_Content_Filters]] are a xaml-based customization that connects a user input control (usually a textbox) with a specific content property on the content object. This user input is converted into filter criteria and applied directly to the child list, where only matched objects are retained.&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Implement_Custom_Filtering|Dynamic Filtering]] is the most flexible, but also the most complex, method of XAML-based filtering. A set of [[EvalExpression|EvalExpressions]] converts user inputs into a complex filter string, which is then applied immediately to whichever ItemsSource is defined in the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]]/[[Xamarin_XAML#FeatureRelated|SfDataSourceExt]]. Note that in this approach, user inputs are not directly connected to any data, which means that reloading the page in any way (eg. by navigation) causes the input controls to return to their xaml-defined state.&lt;br /&gt;
&lt;br /&gt;
{{Attention|While any of the above approaches can be used, it is never recommended to mix approaches, as this causes multiple rounds of filtering per keystroke that will noticeably impact performance, especially when many objects and filters are involved!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Behaviors in style definitions ===&lt;br /&gt;
It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].&lt;br /&gt;
&lt;br /&gt;
For better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:&lt;br /&gt;
* When attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.&lt;br /&gt;
* Bindings work the same way in general. However, it's not possible to bind to named elements through the &amp;lt;code&amp;gt;&amp;quot;{Binding ElementName=someName, Path=...&amp;quot;&amp;lt;/code&amp;gt; syntax and there doesn't seem to be a way to achieve similar goals.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&lt;br /&gt;
xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
&amp;lt;Style x:Key=&amp;quot;UBIKNamePropertyGrid&amp;quot; TargetType=&amp;quot;Grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Setter Property=&amp;quot;behaviors:AttachBehavior.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
                &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; CommandParameter=&amp;quot;MP_NAME&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
    &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} ===&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
&lt;br /&gt;
The '''UBIKStateObserver''' (UWP only) is a custom State trigger that allows activating a Visual State based on a value. The trigger compares the '''StateObserver''' value with the specified '''ExpectedValue'''. If both values are equal, the corresponding VisualState becomes active. This enables clean, template-based UI state changes without attaching behaviors directly to controls. It is especially useful in scenarios where behaviors cannot be reused in styles due to framework limitations.&lt;br /&gt;
&lt;br /&gt;
Custom states should be placed in a separate VisualStateGroup. States within the same group are mutually exclusive. If combined with standard groups such as CommonStates (Normal, Focused, PointerOver, etc.), the custom state may be overridden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:trigger=&amp;quot;using:UBIK.WinX.Trigger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Style ...&amp;gt;&lt;br /&gt;
   &amp;lt;Setter Property=&amp;quot;Template&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
           &amp;lt;ControlTemplate&amp;gt;&lt;br /&gt;
                 &amp;lt;Grid x:Name=&amp;quot;ExampleGrid&amp;quot; /&amp;gt;&lt;br /&gt;
                 &amp;lt;VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
                       &amp;lt;VisualStateGroup x:Name=&amp;quot;CustomStates&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;VisualState x:Name=&amp;quot;CustomState&amp;quot;&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                         &amp;lt;trigger:UBIKStateObserver StateObserver=&amp;quot;{Binding ValueItem.PropertyValue.IsSuggestedValue}&amp;quot; ExpectedValue=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.Setters&amp;gt;&lt;br /&gt;
                                         &amp;lt;Setter Target=&amp;quot;ExampleGrid.Foreground&amp;quot; Value=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.Setters&amp;gt;&lt;br /&gt;
                              &amp;lt;/VisualState&amp;gt;&lt;br /&gt;
                       &amp;lt;/VisualStateGroup&amp;gt;&lt;br /&gt;
                 &amp;lt;/VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
           &amp;lt;/ControlTemplate&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentControl ===&lt;br /&gt;
In UWP XAML, one often uses a &amp;lt;code&amp;gt;&amp;lt;ContentControl  ... ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; to choose different templates depending on the binding context.&lt;br /&gt;
However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.&lt;br /&gt;
For such scenarios, we have created a UBIKContentControl. See the example below.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&amp;lt;controls:UBIKContentControl&lt;br /&gt;
    Content=&amp;quot;{Binding MROViewModel}&amp;quot;&lt;br /&gt;
    ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot;&lt;br /&gt;
    TemplateReselectTrigger=&amp;quot;{Binding IsLocked}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Custom Icons ==&lt;br /&gt;
Moved to article [[XAML_Tips#Custom_Icons]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Mobile and UWP ==&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Mobile, which is used to develop clients for three different platforms namely iOS, Android and Windows (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Maui in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and, in general, the internet can support you when searching e.g. for a control in Mobile that you used in UWP.&lt;br /&gt;
More specific documentations about Mobile Customizing can be found under [[Mobile XAML]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please consider that Mobile Windows is not an official product and therefore it can't be guaranteed that all our features work without issues.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29414</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29414"/>
				<updated>2026-02-26T14:04:32Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Miscellaneous */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save button can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; &lt;br /&gt;
* The Annotation button can be hidden with AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The HS button can be hidden with HotspotButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The undo and redo operations can be turned on/off with IsUndoEnabled=&amp;quot;true/false&amp;quot;. The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}}&lt;br /&gt;
&lt;br /&gt;
* The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Double x:Key=&amp;quot;AnnotationDefaultStrokeWidth&amp;quot;&amp;gt;1&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.&lt;br /&gt;
* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.&lt;br /&gt;
* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKPdfViewer&lt;br /&gt;
    ...&lt;br /&gt;
    EnableSeparateInkStrokes=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKWebView {{Version/WinXSince|5.1}} ====&lt;br /&gt;
As there is a bug in the WebView2 (only in WinX/UWP) where specific links cannot be opened, we introduced the UBIKWebView, which contains a workaround for this issue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKWebView x:Name=&amp;quot;WebContent&amp;quot; Source=&amp;quot;{Binding DocumentViewModel.OnlineURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Working with Properties is a foundational role of the UI customizer. Be aware that the term can refer to various elements of a content object's datamodel, including details like its Title, SubTitle, UID, classification info, etc. However, this article deals specifically with '''content properties'''; those which are displayed under the Property tab in the UBIK client.&lt;br /&gt;
&lt;br /&gt;
=== Displaying Properties ===&lt;br /&gt;
Displaying with properties is an extremely common requirement in custom UIs. UBIK offers several different bindings, each with specific benefits. It may be enough to simply display the value of a simple string or numeric property somewhere in your UI, or else you might need to display complex properties or execute a certain property-based command. &lt;br /&gt;
&lt;br /&gt;
The table below clarifies the various functionalities and how they can best be used in different scenarios.&lt;br /&gt;
&lt;br /&gt;
It is important to note that for these bindings we are assuming a content viewmodel (ie. an object observed in the client, either after navigating to it, or else when viewing it as an item in the child list of another content object).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Collection !! {{Tooltip|Performance|Could rendering be slowed down by using this binding, especially on ItemTemplates used in a list of many items.}} !! {{Tooltip|Capability|Extent of the viewmodel accessed}} !! {{Tooltip|Lazy-Loaded|Loaded on-demand (vs. always present)}} &lt;br /&gt;
|-&lt;br /&gt;
| Values || Great || Very limited - Read only, Property value only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyItems || Good || Limited - Read only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyByName || Ok up to 5 uses || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Properties.XItems || Impacted || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Values[MP_PROPERTY] ====&lt;br /&gt;
* This is the most basic and performant way to bind to a property value. &lt;br /&gt;
* This collection simply displays the 'true' value of a property, meaning that it is only useful displaying for simple properties, such as String, Int, Dbl, unformatted DateTime, etc. Properties that have a DisplayValue that is different from their true value, such as GUIDs or selective list items with labels, are not best displayed using this binding.&lt;br /&gt;
* For complex iproperties, it can be still be used in the xaml for non-display purposes, such as in combination with converters or commands. It is immediately present on the most basic content viewmodel (the ContentListItemViewModels used by child lists) without having to be loaded, and remains the best choice in most cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't Do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Properties.AllItems[MP_GUID].Value}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Values[MP_GUID]}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PropertyItems[MP_PROPERTY]... ====&lt;br /&gt;
This collection can be used when the Value collection does not suffice for displaying appropriate values. This PropertyViewModel presents more options than the simple Values collection, however, &amp;lt;u&amp;gt;it should still only be used for displaying text in the UI&amp;lt;/u&amp;gt; as it bypasses the modern functionality offered by UBIK, such as user rights, locked states, etc.&lt;br /&gt;
&lt;br /&gt;
==== Properties.XItems[MP_PROPERTY]... ====&lt;br /&gt;
These collections were created as a response to the criticism that earlier collections like Values and PropertyItems did not expose enough of a content object's viewmodel to be useful to our ever more sophisticated custom UIs. These collections now provide the full PropertyViewModel, where all aspects of a property (including ''it's'' properties, such as Unit attached to Double, the seperate Min/Value/Max valueitems, Date and Time extracted from the DateTime property, Lon/Lat or Alt extracted from the Geo property, and many more) can be accessed in Bindings. &lt;br /&gt;
* However, the downside of accessing this huge viewmodel is the noticeable performance impact, as it loads all instances of properties for the context object, even though only one (MP_PROPERTY) is requested. This impact is felt especially when such as binding is used on an item template in a list with many content objects, of which each has many properties. &lt;br /&gt;
* These collections are [[Fast_Startup_(Client)|Lazy Loaded]]*, which means that they are not loaded by default, however, a single binding to that collection will load it. When used on an item template in a list, all viewmodels for all properties for all child items will simultaneously be loaded, leading to the performance impact described in this article.&lt;br /&gt;
* &amp;quot;Properties.XItems&amp;quot; is not a real collection. The most frequently used collections are Properties.AllItems, Properties.VisibleItems, Properties.EditableItems, and Properties.ImportantItems (properties which fall into the [[UBIK_WinX_Client_Basics#High_priority_properties|Priority threshold]]). The number of properties delivered to a content object in each collection (for example; all, 80%, 40% and 10%, respectively) is also a consideration when estimating the performance impact of binding to these collections; simply put, use the smallest collection possible where the desired property is consistently located.&lt;br /&gt;
&lt;br /&gt;
==== PropertyByName[MP_PROPERTY]... ==== &lt;br /&gt;
This collection was created to overcome the performance impact arising from using Properties.XItems, by individually loading the PropertyViewModel for the named property. However, note that the benefit only lasts while the binding is used sparingly; rendering performance will be roughly the same as loading the Properties collection after 3-5 uses on a single item template.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The Values[ ] collection delivers the property's value as a string. The equivalent for the other bindings (above shown as '...') is &amp;lt;code&amp;gt;{Binding Collection[PROPERTY_NAME].'''DisplayValue'''}&amp;lt;/code&amp;gt;, however, the capability of these viewmodels goes far beyond the DisplayValue. Use [[Developer_Mode]] to learn more.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== * Troubleshooting null property values ====&lt;br /&gt;
Because certain property collections are Lazy-loaded as described above, it may be the case that bindings to these properties appear null in certain circumstances, especially if the collection is loaded after the page is rendered, such as through a command or behavior. To troubleshoot this issue, you can ensure that the property collection is accessed during rendertime rather than runtime (simply put, while the page is being constructed rather than during normal use) by applying the same binding to, for example, a Label. This measure should still work if the Label is hidden from view using a visibility binding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing Properties ===&lt;br /&gt;
There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:&lt;br /&gt;
* [[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. &lt;br /&gt;
** It is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.&lt;br /&gt;
* Similarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.&lt;br /&gt;
** These two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.&lt;br /&gt;
** These commands can be seen in action as the standard UI for properties when clicking on the icon to trigger &amp;quot;indirect&amp;quot; editing for any individual metaproperty. &lt;br /&gt;
** Property changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.&lt;br /&gt;
* The [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible. Similarly, audio document creation requires a file type &amp;quot;*.wav&amp;quot; to be included in the selective list.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Filtering ==&lt;br /&gt;
Filtering of objects is a common requirement in UBIK projects. The table below shows the three main approaches, with the functionality each offers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Configuration/Requirements !! {{Tooltip|Persisted|Filter criteria are retained when navigating, or even closing the client.}}  !! {{Tooltip|Multiple/Complex Values|Multiple user inputs supported for a single filter property.}}  !! {{Tooltip|Property type|Data elements supported as filter properties.}} !! {{Tooltip|Possible Item Source|Collections supported as item sources.}}&lt;br /&gt;
|-&lt;br /&gt;
| Query || Fully defined on the server || Yes || Limited (DateTime, Dbl, Int) where a range is possible. || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}}, Documents&lt;br /&gt;
|-&lt;br /&gt;
| Property-Based Content Filters || Defined in XAML, requires custom  [[SYSCLS_CHILDAREATEMPLATE|Child Area template name]] || Yes || No || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}} only&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Filters || Fully defined in XAML || No || Yes || Any bindable data (eg. Content properties, metadefinitions, etc). || Content objects, Properties, Documents, etc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A [[Query]] is a container that delivers a defined collection of content objects. Properties can be added to the query to serve as filter criteria, where a user can perform their search by editing these properties. &lt;br /&gt;
&lt;br /&gt;
[[Property_Based_Content_Filters]] are a xaml-based customization that connects a user input control (usually a textbox) with a specific content property on the content object. This user input is converted into filter criteria and applied directly to the child list, where only matched objects are retained.&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Implement_Custom_Filtering|Dynamic Filtering]] is the most flexible, but also the most complex, method of XAML-based filtering. A set of [[EvalExpression|EvalExpressions]] converts user inputs into a complex filter string, which is then applied immediately to whichever ItemsSource is defined in the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]]/[[Xamarin_XAML#FeatureRelated|SfDataSourceExt]]. Note that in this approach, user inputs are not directly connected to any data, which means that reloading the page in any way (eg. by navigation) causes the input controls to return to their xaml-defined state.&lt;br /&gt;
&lt;br /&gt;
{{Attention|While any of the above approaches can be used, it is never recommended to mix approaches, as this causes multiple rounds of filtering per keystroke that will noticeably impact performance, especially when many objects and filters are involved!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Behaviors in style definitions ===&lt;br /&gt;
It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].&lt;br /&gt;
&lt;br /&gt;
For better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:&lt;br /&gt;
* When attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.&lt;br /&gt;
* Bindings work the same way in general. However, it's not possible to bind to named elements through the &amp;lt;code&amp;gt;&amp;quot;{Binding ElementName=someName, Path=...&amp;quot;&amp;lt;/code&amp;gt; syntax and there doesn't seem to be a way to achieve similar goals.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&lt;br /&gt;
xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
&amp;lt;Style x:Key=&amp;quot;UBIKNamePropertyGrid&amp;quot; TargetType=&amp;quot;Grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Setter Property=&amp;quot;behaviors:AttachBehavior.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
                &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; CommandParameter=&amp;quot;MP_NAME&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
    &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom VisualState Trigger  {{Version/WinXSince|5.1.1}} ===&lt;br /&gt;
{{UnderConstructionStart}}&lt;br /&gt;
The UBIKStateObserver (UWP only) is a custom State trigger that allows activating a Visual State based on a value. The trigger compares the '''StateObserver''' value with the specified '''ExpectedValue'''. If both values are equal, the corresponding VisualState becomes active. This enables clean, template-based UI state changes without attaching behaviors directly to controls. It is especially useful in scenarios where behaviors cannot be reused in styles due to framework limitations.&lt;br /&gt;
&lt;br /&gt;
Custom states should be placed in a separate VisualStateGroup. States within the same group are mutually exclusive. If combined with standard groups such as CommonStates (Normal, Focused, PointerOver, etc.), the custom state may be overridden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:trigger=&amp;quot;using:UBIK.WinX.Trigger&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Style ...&amp;gt;&lt;br /&gt;
   &amp;lt;Setter Property=&amp;quot;Template&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
           &amp;lt;ControlTemplate&amp;gt;&lt;br /&gt;
                 &amp;lt;Grid x:Name=&amp;quot;ExampleGrid&amp;quot; /&amp;gt;&lt;br /&gt;
                 &amp;lt;VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
                       &amp;lt;VisualStateGroup x:Name=&amp;quot;CustomStates&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;VisualState x:Name=&amp;quot;CustomState&amp;quot;&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                         &amp;lt;trigger:UBIKStateObserver StateObserver=&amp;quot;{Binding ValueItem.PropertyValue.IsSuggestedValue}&amp;quot; ExpectedValue=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.StateTriggers&amp;gt;&lt;br /&gt;
                                   &amp;lt;VisualState.Setters&amp;gt;&lt;br /&gt;
                                         &amp;lt;Setter Target=&amp;quot;ExampleGrid.Foreground&amp;quot; Value=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
                                   &amp;lt;/VisualState.Setters&amp;gt;&lt;br /&gt;
                              &amp;lt;/VisualState&amp;gt;&lt;br /&gt;
                       &amp;lt;/VisualStateGroup&amp;gt;&lt;br /&gt;
                 &amp;lt;/VisualStateManager.VisualStateGroups&amp;gt;&lt;br /&gt;
           &amp;lt;/ControlTemplate&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{UnderConstructionEnd}}&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentControl ===&lt;br /&gt;
In UWP XAML, one often uses a &amp;lt;code&amp;gt;&amp;lt;ContentControl  ... ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; to choose different templates depending on the binding context.&lt;br /&gt;
However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.&lt;br /&gt;
For such scenarios, we have created a UBIKContentControl. See the example below.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&amp;lt;controls:UBIKContentControl&lt;br /&gt;
    Content=&amp;quot;{Binding MROViewModel}&amp;quot;&lt;br /&gt;
    ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot;&lt;br /&gt;
    TemplateReselectTrigger=&amp;quot;{Binding IsLocked}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Custom Icons ==&lt;br /&gt;
Moved to article [[XAML_Tips#Custom_Icons]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Mobile and UWP ==&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Mobile, which is used to develop clients for three different platforms namely iOS, Android and Windows (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Maui in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and, in general, the internet can support you when searching e.g. for a control in Mobile that you used in UWP.&lt;br /&gt;
More specific documentations about Mobile Customizing can be found under [[Mobile XAML]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please consider that Mobile Windows is not an official product and therefore it can't be guaranteed that all our features work without issues.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29295</id>
		<title>Version 5.1 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29295"/>
				<updated>2026-02-04T07:56:39Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* 5.1.?? on 202?-??-?? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|This version requires [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1809_(October_2018_Update) Windows 10 build 17763] or higher}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Store}}: Publicly available in Microsoft Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Store Beta}} / {{key press|Store Preview}}: Publicly available in Microsoft Store as beta or preview versions to those whose account email is participating in our beta or preview test. To join, please send an email to testing@augmensys.com and provide an email address to add to the list as well as the information which test you want to join. Alternatively you can contact the Augmensys staff and submit your chosen email address.&lt;br /&gt;
&lt;br /&gt;
Example: Please add my email account example@example.com to the '''Beta''' test group for the '''WinX''' client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.?? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added a [[XAML#UBIKWebView|UBIKWebView]] control that includes a fix in the WebView2 where some links could not be opened.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* Added support for conditionally showing the ImageEditor Save button only when edits have been made, enabled when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
* Fixed an issue where the deletion of some objects was not reflected in the UI until refresh.&lt;br /&gt;
* Fixed an issue where certain documents couldn't be loaded anymore.&lt;br /&gt;
* Fixed issue that caused input fields to be focused but not editable.&lt;br /&gt;
* Fixed an issue where the UI did not update properly when committing a direct edit input task.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Due to third-party limitations, the feature that shows the ImageEditor Save button only when edits have been made is only active when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Branch_Download&amp;diff=29241</id>
		<title>Branch Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Branch_Download&amp;diff=29241"/>
				<updated>2025-12-18T11:19:04Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* BranchDownloadCommand */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To support offline use cases, {{UBIK}} clients provide the possibility to bring data offline. It's achieved by downloading specified data branches in advance.&lt;br /&gt;
&lt;br /&gt;
{{Hint|When a branch download is in progress, you can work with the offline data which is already available at the time of the download, but any communication with the content server will be scheduled after the branch download is finished.}}&lt;br /&gt;
&lt;br /&gt;
== Manual Download ==&lt;br /&gt;
When using the clients in non-offline sync modes, you can trigger a branch download from any content object. Depending on the clients and the XAML customizings, the UI for starting branch downloads might differ. Here's the default UI on different clients.&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;200&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_WinX_Branch_Download_Button.png|button in content area top bar (UWP)&lt;br /&gt;
File:UI_Xamarin_Branch_Download_Page_Menu.png|button in page menu (Mobile)&lt;br /&gt;
File:UI_Xamarin_Branch_Download_Item_Swipe.png|button in item swipe menu (Mobile)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{{Hint|Manual downloads always have higher priorities than automatic downloads. In other words, a manual download will &amp;quot;cut in line&amp;quot; in front of all automatic downloads (except if one is already in the middle of executing).}}&lt;br /&gt;
&lt;br /&gt;
=== BranchDownloadCommand ===&lt;br /&gt;
&lt;br /&gt;
With the ''BranchDownloadCommand'' it is possible to download a branch manually.&lt;br /&gt;
&lt;br /&gt;
* {{Version/WinXSince|4.1}} {{Version/XamarinSince|4.1}} CheckOut CommandParameter (optional, defaults to false): Setting CheckOut to true provides the possibility to check out all downloaded content afterwards. Further information see in [[Exclusive_Access_Content_(Client)]].&lt;br /&gt;
* {{Version/WinXSince|4.8}} {{Version/XamarinSince|4.8}} SkipDialog CommandParameter (optional, defaults to false): Usually before downloading a branch a dialog is raised for the user to confirm or cancel the action. Setting SkipDialog to true provides the possibility to skip this dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Button&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding BranchDownloadCommand}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;CheckOut&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Maui)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Button&lt;br /&gt;
      xmlns:example=&amp;quot;clr-namespace:UBIK.MAUI.Classes;assembly=UBIK.MAUI&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding BranchDownloadCommand}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;CheckOut&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Button&lt;br /&gt;
      xmlns:example=&amp;quot;using:clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding BranchDownloadCommand}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;CheckOut&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Branch Download]]&lt;br /&gt;
[[Category:Mobile|Branch Download]]&lt;br /&gt;
[[Category:Version 3.8|Branch Download]]&lt;br /&gt;
[[Category:WinX|Branch Download]]&lt;br /&gt;
&lt;br /&gt;
== Automatic Download {{Version/WinXSince|3.8}} ==&lt;br /&gt;
Content objects can be classified in a way that their branches are automatically downloaded to the clients.&lt;br /&gt;
[[SYSCLS_OFFLINE_SYNC_CONFIGURATION|Different configurations]] are supported so that the download can happen at different timing.&lt;br /&gt;
&lt;br /&gt;
== Configurable Offline Sync Levels {{Version/WinXSince|4.7}}==&lt;br /&gt;
Content objects can be classified with the [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
{{hint|'''Sublevels to analyze'''&amp;lt;br&amp;gt;&lt;br /&gt;
If there are sublevels to analyze all the information on the children will be ignored.  Here just the SyncLevel (in this case the ChildDepth) of the root object will be respected.}}&lt;br /&gt;
== Download States {{Version/WinXSince|3.8}} ==&lt;br /&gt;
To help users better understand what is going on during a branch download, the clients display different icons. The following examples are from the Mobile clients.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;120&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_Xamarin_Branch_Pending.png|pending (to run at least once)&lt;br /&gt;
File:UI_Xamarin_Branch_Syncing.png|syncing&lt;br /&gt;
File:UI_Xamarin_Branch_Synced.png|synced&lt;br /&gt;
File:UI_Xamarin_Branch_Failed.png|failed&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{{Hint|All states are displayed for an entire branch. If the parent (direct or indirect) of a child object is syncing, that child object will display the same syncing state.}}&lt;br /&gt;
{{Hint|States are displayed in different priorities (syncing &amp;gt; pending &amp;gt; synced/failed). For example, if a child object is syncing and its parent is pending, the child object will &amp;quot;retain&amp;quot; its syncing state. But if their states are switched, the child object's pending state will be &amp;quot;overwritten&amp;quot; by the parent's syncing state. As for the synced/failed states, the more recent one is displayed.}}&lt;br /&gt;
&lt;br /&gt;
== Failed Document Download Dialog {{Version/MobileSince|5.1}}{{Version/WinXSince|5.1}} ==&lt;br /&gt;
If the branch download succeeds, but not all documents were downloaded successfully, there's the option to enable a dialog displaying the count of total and actually downloaded documents. The &amp;quot;Open Logs&amp;quot; button provides the possibility to open the related log file in an external text editor to inspect details about the failed document downloads.&lt;br /&gt;
&lt;br /&gt;
[[File:FailedDocumentDownloadDialog.PNG]]&lt;br /&gt;
&lt;br /&gt;
By default, the dialog is deactivated. It can be activated by setting (or adding) the following boolean property in UBIKThemes:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Boolean x:Key=&amp;quot;EnableBranchDownloadDocumentWarning&amp;quot;&amp;gt;true&amp;lt;/x:Boolean&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Background Download ==&lt;br /&gt;
{{Version/XamarinSince|4.2}} On Android, {{UBIK}} makes sure branch download tasks are not interrupted/suspended even when the device is locked or in sleep mode. However, this is only possible when {{UBIK}} is excluded from the list of battery usage optimized apps.&lt;br /&gt;
&lt;br /&gt;
To help you check and change this setting, {{UBIK}} will try to lead you to the relevant settings page upon its first launch. But it's also a good idea to check the settings according to the specifications of your specific device models.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Branch Download]]&lt;br /&gt;
[[Category:Mobile|Branch Download]]&lt;br /&gt;
[[Category:Version 3.8|Branch Download]]&lt;br /&gt;
[[Category:WinX|Branch Download]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(Mobile)&amp;diff=29240</id>
		<title>Version 5.1 (Mobile)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(Mobile)&amp;diff=29240"/>
				<updated>2025-12-18T10:08:53Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|Existing pre 5.0 XAMLs are not compatible with UBIK Mobile client 5.1. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|UBIK 5 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The minimum supported OS versions are:&lt;br /&gt;
* Android 9;&lt;br /&gt;
* iOS 12.}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Android: Store}}{{key press|iOS: Store}}: Publicly available in Google Play Store / Apple App Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Beta}}: Publicly available in Google Play Store as beta versions. You can opt in or out of the beta at any time in the store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Preview}}: Available through Google Play Store's [https://play.google.com/store/apps/details?id=com.augmensys.ubik.go invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/Kmb1HG9E invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Preview}}: Available through Apple App Store's [https://testflight.apple.com/join/yHRnbYbt invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|Windows: Store Preview}}: The mobile Windows client is not an official product and is only distributed as test versions upon request and/or in our [https://release.augmensys.com/download/modules/client/mobile/ release portal].&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with a ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.??? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* (Android) Fixed an issue in the WebView where some links could not be opened.&lt;br /&gt;
* Added support for conditionally showing the ImageEditor Save button only when edits have been made, enabled when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
* Fixed an issue where the deletion of some objects was not reflected in the UI until refresh.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Due to third-party limitations, the feature that shows the ImageEditor Save button only when edits have been made is only active when MergeAnnotationsOnSave is set to true. In Mobile, deleting the last annotation does not correctly update the editor's internal edit state. As a result, the Save button may remain visible even though no edits exist.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
Due to the change of the underlying XAML technology, the existing XAMLs for the old mobile clients (pre 5.0) are no longer compatible. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Mobile|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (Mobile)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29239</id>
		<title>Version 5.1 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29239"/>
				<updated>2025-12-18T10:08:31Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|This version requires [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1809_(October_2018_Update) Windows 10 build 17763] or higher}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Store}}: Publicly available in Microsoft Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Store Beta}} / {{key press|Store Preview}}: Publicly available in Microsoft Store as beta or preview versions to those whose account email is participating in our beta or preview test. To join, please send an email to testing@augmensys.com and provide an email address to add to the list as well as the information which test you want to join. Alternatively you can contact the Augmensys staff and submit your chosen email address.&lt;br /&gt;
&lt;br /&gt;
Example: Please add my email account example@example.com to the '''Beta''' test group for the '''WinX''' client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.?? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added a [[XAML#UBIKWebView|UBIKWebView]] control that includes a fix in the WebView2 where some links could not be opened.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* Added support for conditionally showing the ImageEditor Save button only when edits have been made, enabled when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
* Fixed an issue where the deletion of some objects was not reflected in the UI until refresh.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Due to third-party limitations, the feature that shows the ImageEditor Save button only when edits have been made is only active when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.0_(WinX)&amp;diff=29238</id>
		<title>Version 5.0 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.0_(WinX)&amp;diff=29238"/>
				<updated>2025-12-18T10:07:56Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|This version requires [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1809_(October_2018_Update) Windows 10 build 17763] or higher}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Store}}: Publicly available in Microsoft Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Store Beta}} / {{key press|Store Preview}}: Publicly available in Microsoft Store as beta or preview versions to those whose account email is participating in our beta or preview test. To join, please send an email to testing@augmensys.com and provide an email address to add to the list as well as the information which test you want to join. Alternatively you can contact the Augmensys staff and submit your chosen email address.&lt;br /&gt;
&lt;br /&gt;
Example: Please add my email account example@example.com to the '''Beta''' test group for the '''WinX''' client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.40 on 2025-12-?? {{key press|Store}}  ===&lt;br /&gt;
* Fixed an issue where the deletion of some objects was not reflected in the UI until refresh.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5.0.36 on 2025-10-02 {{key press|Store}}  ===&lt;br /&gt;
* Fixed an issue where task direct editing doesn't work the first time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5.0.35 on 2025-09-29 {{key press|Store}}  ===&lt;br /&gt;
* Updated some translations.&lt;br /&gt;
* Updated the default Demo profile.&lt;br /&gt;
* Updated the notification message about branch download to avoid misunderstanding. When a branch download is in progress, you can work with the offline data which is already available at the time of the download, but any communication with the content server will be scheduled after the branch download is finished.&lt;br /&gt;
* Fixed issue that rendered authentication when editing a geo property impossible.&lt;br /&gt;
* Fixed an issue that triggered a license warning even on a failed login.&lt;br /&gt;
* Fixed an issue where the wizard is shown again when you navigate to a new but saved object offline.&lt;br /&gt;
* Fixed an issue where duplicate notifications are shown when you scan an NFC tag for a supervisor task and no fitting supervisor is found.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* When editing Guid Link properties, you can no longer further edit the filtering if there are predefined filter parameters (such as the [[Dynamic_Selective_List_(Client)#Dependency_property_values|dependency property values in dynamic selective lists]]). This is because those parameters are to be enforced by design and should not be changed by users. In the future, we might consider a finer level of control over which parameters can be edited in such cases.&lt;br /&gt;
* Free Text Annotations that where created in former sessions cannot be selected and therefore cannot be edited any more.&lt;br /&gt;
* There are still some [[Annotation_and_HotSpot#Known_issues|known issues with free text and text markup annotations]].&lt;br /&gt;
* Known issues regarding the [[Documents_(Client)#Remember_Document_Settings|Remember Document Settings]] feature:&lt;br /&gt;
** Saving the Zoom value via touch gestures is not supported.&lt;br /&gt;
** Due to a third-party framework issue it can't be guaranteed that saving the Zoom level is always working properly. We reported this issue and will update our solution as soon as it is resolved on their side.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.0 (WinX)]]&lt;br /&gt;
[[Category:Version 5.0|Version 5.0 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.0 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29223</id>
		<title>Version 5.1 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29223"/>
				<updated>2025-12-03T14:10:35Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|This version requires [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1809_(October_2018_Update) Windows 10 build 17763] or higher}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Store}}: Publicly available in Microsoft Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Store Beta}} / {{key press|Store Preview}}: Publicly available in Microsoft Store as beta or preview versions to those whose account email is participating in our beta or preview test. To join, please send an email to testing@augmensys.com and provide an email address to add to the list as well as the information which test you want to join. Alternatively you can contact the Augmensys staff and submit your chosen email address.&lt;br /&gt;
&lt;br /&gt;
Example: Please add my email account example@example.com to the '''Beta''' test group for the '''WinX''' client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.?? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added a [[XAML#UBIKWebView|UBIKWebView]] control that includes a fix in the WebView2 where some links could not be opened.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* Added support for conditionally showing the ImageEditor Save button only when edits have been made, enabled when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Due to third-party limitations, the feature that shows the ImageEditor Save button only when edits have been made is only active when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(Mobile)&amp;diff=29222</id>
		<title>Version 5.1 (Mobile)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(Mobile)&amp;diff=29222"/>
				<updated>2025-12-03T14:10:26Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|Existing pre 5.0 XAMLs are not compatible with UBIK Mobile client 5.1. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|UBIK 5 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The minimum supported OS versions are:&lt;br /&gt;
* Android 9;&lt;br /&gt;
* iOS 12.}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Android: Store}}{{key press|iOS: Store}}: Publicly available in Google Play Store / Apple App Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Beta}}: Publicly available in Google Play Store as beta versions. You can opt in or out of the beta at any time in the store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Preview}}: Available through Google Play Store's [https://play.google.com/store/apps/details?id=com.augmensys.ubik.go invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/Kmb1HG9E invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Preview}}: Available through Apple App Store's [https://testflight.apple.com/join/yHRnbYbt invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|Windows: Store Preview}}: The mobile Windows client is not an official product and is only distributed as test versions upon request and/or in our [https://release.augmensys.com/download/modules/client/mobile/ release portal].&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with a ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.??? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* (Android) Fixed an issue in the WebView where some links could not be opened.&lt;br /&gt;
* Added support for conditionally showing the ImageEditor Save button only when edits have been made, enabled when MergeAnnotationsOnSave is set to true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Due to third-party limitations, the feature that shows the ImageEditor Save button only when edits have been made is only active when MergeAnnotationsOnSave is set to true. In Mobile, deleting the last annotation does not correctly update the editor's internal edit state. As a result, the Save button may remain visible even though no edits exist.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
Due to the change of the underlying XAML technology, the existing XAMLs for the old mobile clients (pre 5.0) are no longer compatible. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Mobile|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (Mobile)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29202</id>
		<title>Version 5.1 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(WinX)&amp;diff=29202"/>
				<updated>2025-11-27T10:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|This version requires [https://en.wikipedia.org/wiki/Windows_10_version_history#Version_1809_(October_2018_Update) Windows 10 build 17763] or higher}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Store}}: Publicly available in Microsoft Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Store Beta}} / {{key press|Store Preview}}: Publicly available in Microsoft Store as beta or preview versions to those whose account email is participating in our beta or preview test. To join, please send an email to testing@augmensys.com and provide an email address to add to the list as well as the information which test you want to join. Alternatively you can contact the Augmensys staff and submit your chosen email address.&lt;br /&gt;
&lt;br /&gt;
Example: Please add my email account example@example.com to the '''Beta''' test group for the '''WinX''' client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.?? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added a [[XAML#UBIKWebView|UBIKWebView]] control that includes a fix in the WebView2 where some links could not be opened.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 5.1 (WinX)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29201</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=XAML&amp;diff=29201"/>
				<updated>2025-11-27T10:35:34Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* Specific {{UBIK}} Controls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save button can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; &lt;br /&gt;
* The Annotation button can be hidden with AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The HS button can be hidden with HotspotButtonVisibility=&amp;quot;Collapsed&amp;quot;&lt;br /&gt;
* The undo and redo operations can be turned on/off with IsUndoEnabled=&amp;quot;true/false&amp;quot;. The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}}&lt;br /&gt;
&lt;br /&gt;
* The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:Double x:Key=&amp;quot;AnnotationDefaultStrokeWidth&amp;quot;&amp;gt;1&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.&lt;br /&gt;
* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.&lt;br /&gt;
* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKPdfViewer&lt;br /&gt;
    ...&lt;br /&gt;
    EnableSeparateInkStrokes=&amp;quot;True&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKWebView {{Version/WinXSince|5.1}} ====&lt;br /&gt;
As there is a bug in the WebView2 (only in WinX/UWP) where specific links cannot be opened, we introduced the UBIKWebView, which contains a workaround for this issue.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKWebView x:Name=&amp;quot;WebContent&amp;quot; Source=&amp;quot;{Binding DocumentViewModel.OnlineURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Working with Properties is a foundational role of the UI customizer. Be aware that the term can refer to various elements of a content object's datamodel, including details like its Title, SubTitle, UID, classification info, etc. However, this article deals specifically with '''content properties'''; those which are displayed under the Property tab in the UBIK client.&lt;br /&gt;
&lt;br /&gt;
=== Displaying Properties ===&lt;br /&gt;
Displaying with properties is an extremely common requirement in custom UIs. UBIK offers several different bindings, each with specific benefits. It may be enough to simply display the value of a simple string or numeric property somewhere in your UI, or else you might need to display complex properties or execute a certain property-based command. &lt;br /&gt;
&lt;br /&gt;
The table below clarifies the various functionalities and how they can best be used in different scenarios.&lt;br /&gt;
&lt;br /&gt;
It is important to note that for these bindings we are assuming a content viewmodel (ie. an object observed in the client, either after navigating to it, or else when viewing it as an item in the child list of another content object).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Collection !! {{Tooltip|Performance|Could rendering be slowed down by using this binding, especially on ItemTemplates used in a list of many items.}} !! {{Tooltip|Capability|Extent of the viewmodel accessed}} !! {{Tooltip|Lazy-Loaded|Loaded on-demand (vs. always present)}} &lt;br /&gt;
|-&lt;br /&gt;
| Values || Great || Very limited - Read only, Property value only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyItems || Good || Limited - Read only || No&lt;br /&gt;
|-&lt;br /&gt;
| PropertyByName || Ok up to 5 uses || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
| Properties.XItems || Impacted || Unlimited - Full PropertyViewModel || Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Values[MP_PROPERTY] ====&lt;br /&gt;
* This is the most basic and performant way to bind to a property value. &lt;br /&gt;
* This collection simply displays the 'true' value of a property, meaning that it is only useful displaying for simple properties, such as String, Int, Dbl, unformatted DateTime, etc. Properties that have a DisplayValue that is different from their true value, such as GUIDs or selective list items with labels, are not best displayed using this binding.&lt;br /&gt;
* For complex iproperties, it can be still be used in the xaml for non-display purposes, such as in combination with converters or commands. It is immediately present on the most basic content viewmodel (the ContentListItemViewModels used by child lists) without having to be loaded, and remains the best choice in most cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Don't Do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Properties.AllItems[MP_GUID].Value}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Instead do&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Command Parameter=&amp;quot;{Binding Values[MP_GUID]}&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PropertyItems[MP_PROPERTY]... ====&lt;br /&gt;
This collection can be used when the Value collection does not suffice for displaying appropriate values. This PropertyViewModel presents more options than the simple Values collection, however, &amp;lt;u&amp;gt;it should still only be used for displaying text in the UI&amp;lt;/u&amp;gt; as it bypasses the modern functionality offered by UBIK, such as user rights, locked states, etc.&lt;br /&gt;
&lt;br /&gt;
==== Properties.XItems[MP_PROPERTY]... ====&lt;br /&gt;
These collections were created as a response to the criticism that earlier collections like Values and PropertyItems did not expose enough of a content object's viewmodel to be useful to our ever more sophisticated custom UIs. These collections now provide the full PropertyViewModel, where all aspects of a property (including ''it's'' properties, such as Unit attached to Double, the seperate Min/Value/Max valueitems, Date and Time extracted from the DateTime property, Lon/Lat or Alt extracted from the Geo property, and many more) can be accessed in Bindings. &lt;br /&gt;
* However, the downside of accessing this huge viewmodel is the noticeable performance impact, as it loads all instances of properties for the context object, even though only one (MP_PROPERTY) is requested. This impact is felt especially when such as binding is used on an item template in a list with many content objects, of which each has many properties. &lt;br /&gt;
* These collections are [[Fast_Startup_(Client)|Lazy Loaded]]*, which means that they are not loaded by default, however, a single binding to that collection will load it. When used on an item template in a list, all viewmodels for all properties for all child items will simultaneously be loaded, leading to the performance impact described in this article.&lt;br /&gt;
* &amp;quot;Properties.XItems&amp;quot; is not a real collection. The most frequently used collections are Properties.AllItems, Properties.VisibleItems, Properties.EditableItems, and Properties.ImportantItems (properties which fall into the [[UBIK_WinX_Client_Basics#High_priority_properties|Priority threshold]]). The number of properties delivered to a content object in each collection (for example; all, 80%, 40% and 10%, respectively) is also a consideration when estimating the performance impact of binding to these collections; simply put, use the smallest collection possible where the desired property is consistently located.&lt;br /&gt;
&lt;br /&gt;
==== PropertyByName[MP_PROPERTY]... ==== &lt;br /&gt;
This collection was created to overcome the performance impact arising from using Properties.XItems, by individually loading the PropertyViewModel for the named property. However, note that the benefit only lasts while the binding is used sparingly; rendering performance will be roughly the same as loading the Properties collection after 3-5 uses on a single item template.&lt;br /&gt;
&lt;br /&gt;
{{Hint|The Values[ ] collection delivers the property's value as a string. The equivalent for the other bindings (above shown as '...') is &amp;lt;code&amp;gt;{Binding Collection[PROPERTY_NAME].'''DisplayValue'''}&amp;lt;/code&amp;gt;, however, the capability of these viewmodels goes far beyond the DisplayValue. Use [[Developer_Mode]] to learn more.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== * Troubleshooting null property values ====&lt;br /&gt;
Because certain property collections are Lazy-loaded as described above, it may be the case that bindings to these properties appear null in certain circumstances, especially if the collection is loaded after the page is rendered, such as through a command or behavior. To troubleshoot this issue, you can ensure that the property collection is accessed during rendertime rather than runtime (simply put, while the page is being constructed rather than during normal use) by applying the same binding to, for example, a Label. This measure should still work if the Label is hidden from view using a visibility binding.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Editing Properties ===&lt;br /&gt;
There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:&lt;br /&gt;
* [[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. &lt;br /&gt;
** It is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.&lt;br /&gt;
* Similarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.&lt;br /&gt;
** These two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.&lt;br /&gt;
** These commands can be seen in action as the standard UI for properties when clicking on the icon to trigger &amp;quot;indirect&amp;quot; editing for any individual metaproperty. &lt;br /&gt;
** Property changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.&lt;br /&gt;
* The [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Mobile(Xamarin)&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible. Similarly, audio document creation requires a file type &amp;quot;*.wav&amp;quot; to be included in the selective list.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Object Filtering ==&lt;br /&gt;
Filtering of objects is a common requirement in UBIK projects. The table below shows the three main approaches, with the functionality each offers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Configuration/Requirements !! {{Tooltip|Persisted|Filter criteria are retained when navigating, or even closing the client.}}  !! {{Tooltip|Multiple/Complex Values|Multiple user inputs supported for a single filter property.}}  !! {{Tooltip|Property type|Data elements supported as filter properties.}} !! {{Tooltip|Possible Item Source|Collections supported as item sources.}}&lt;br /&gt;
|-&lt;br /&gt;
| Query || Fully defined on the server || Yes || Limited (DateTime, Dbl, Int) where a range is possible. || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}}, Documents&lt;br /&gt;
|-&lt;br /&gt;
| Property-Based Content Filters || Defined in XAML, requires custom  [[SYSCLS_CHILDAREATEMPLATE|Child Area template name]] || Yes || No || {{Tooltip|Content properties|The kind displayed in the Property tab of the UBIK client}} only || {{Tooltip|Content objects|The kind displayed in the Children tab of the UBIK client}} only&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Filters || Fully defined in XAML || No || Yes || Any bindable data (eg. Content properties, metadefinitions, etc). || Content objects, Properties, Documents, etc&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A [[Query]] is a container that delivers a defined collection of content objects. Properties can be added to the query to serve as filter criteria, where a user can perform their search by editing these properties. &lt;br /&gt;
&lt;br /&gt;
[[Property_Based_Content_Filters]] are a xaml-based customization that connects a user input control (usually a textbox) with a specific content property on the content object. This user input is converted into filter criteria and applied directly to the child list, where only matched objects are retained.&lt;br /&gt;
&lt;br /&gt;
[[HowTo:Implement_Custom_Filtering|Dynamic Filtering]] is the most flexible, but also the most complex, method of XAML-based filtering. A set of [[EvalExpression|EvalExpressions]] converts user inputs into a complex filter string, which is then applied immediately to whichever ItemsSource is defined in the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]]/[[Xamarin_XAML#FeatureRelated|SfDataSourceExt]]. Note that in this approach, user inputs are not directly connected to any data, which means that reloading the page in any way (eg. by navigation) causes the input controls to return to their xaml-defined state.&lt;br /&gt;
&lt;br /&gt;
{{Attention|While any of the above approaches can be used, it is never recommended to mix approaches, as this causes multiple rounds of filtering per keystroke that will noticeably impact performance, especially when many objects and filters are involved!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Behaviors in style definitions ===&lt;br /&gt;
It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].&lt;br /&gt;
&lt;br /&gt;
For better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:&lt;br /&gt;
* When attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.&lt;br /&gt;
* Bindings work the same way in general. However, it's not possible to bind to named elements through the &amp;lt;code&amp;gt;&amp;quot;{Binding ElementName=someName, Path=...&amp;quot;&amp;lt;/code&amp;gt; syntax and there doesn't seem to be a way to achieve similar goals.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&lt;br /&gt;
xmlns:core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
&amp;lt;Style x:Key=&amp;quot;UBIKNamePropertyGrid&amp;quot; TargetType=&amp;quot;Grid&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Setter Property=&amp;quot;behaviors:AttachBehavior.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Setter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
                &amp;lt;core:EventTriggerBehavior EventName=&amp;quot;Tapped&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;core:InvokeCommandAction Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; CommandParameter=&amp;quot;MP_NAME&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:BehaviorCollection&amp;gt;&lt;br /&gt;
        &amp;lt;/Setter.Value&amp;gt;&lt;br /&gt;
    &amp;lt;/Setter&amp;gt;&lt;br /&gt;
&amp;lt;/Style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UBIKContentControl ===&lt;br /&gt;
In UWP XAML, one often uses a &amp;lt;code&amp;gt;&amp;lt;ContentControl  ... ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; to choose different templates depending on the binding context.&lt;br /&gt;
However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.&lt;br /&gt;
For such scenarios, we have created a UBIKContentControl. See the example below.&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
&amp;lt;controls:UBIKContentControl&lt;br /&gt;
    Content=&amp;quot;{Binding MROViewModel}&amp;quot;&lt;br /&gt;
    ContentTemplateSelector=&amp;quot;{StaticResource TaskPropertyTemplateSelector}&amp;quot;&lt;br /&gt;
    TemplateReselectTrigger=&amp;quot;{Binding IsLocked}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Custom Icons ==&lt;br /&gt;
Moved to article [[XAML_Tips#Custom_Icons]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Mobile and UWP ==&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Mobile, which is used to develop clients for three different platforms namely iOS, Android and Windows (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Maui in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and, in general, the internet can support you when searching e.g. for a control in Mobile that you used in UWP.&lt;br /&gt;
More specific documentations about Mobile Customizing can be found under [[Mobile XAML]].&lt;br /&gt;
&lt;br /&gt;
{{Attention|Please consider that Mobile Windows is not an official product and therefore it can't be guaranteed that all our features work without issues.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile|XAML]]&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	<entry>
		<id>https://wiki.augmensys.com/index.php?title=Version_5.1_(Mobile)&amp;diff=29200</id>
		<title>Version 5.1 (Mobile)</title>
		<link rel="alternate" type="text/html" href="https://wiki.augmensys.com/index.php?title=Version_5.1_(Mobile)&amp;diff=29200"/>
				<updated>2025-11-27T10:33:22Z</updated>
		
		<summary type="html">&lt;p&gt;CWI: /* 5.1.??? on 202?-??-?? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|Existing pre 5.0 XAMLs are not compatible with UBIK Mobile client 5.1. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|UBIK 5 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|The minimum supported OS versions are:&lt;br /&gt;
* Android 9;&lt;br /&gt;
* iOS 12.}}&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
{{key press|Android: Store}}{{key press|iOS: Store}}: Publicly available in Google Play Store / Apple App Store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Beta}}: Publicly available in Google Play Store as beta versions. You can opt in or out of the beta at any time in the store.&lt;br /&gt;
&lt;br /&gt;
{{key press|Android: Store Preview}}: Available through Google Play Store's [https://play.google.com/store/apps/details?id=com.augmensys.ubik.go invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/Kmb1HG9E invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|iOS: Store Preview}}: Available through Apple App Store's [https://testflight.apple.com/join/yHRnbYbt invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|Windows: Store Preview}}: The mobile Windows client is not an official product and is only distributed as test versions upon request and/or in our [https://release.augmensys.com/download/modules/client/mobile/ release portal].&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Attention|Some customized XAMLs might need an update to work properly. These changes are marked with a ⚠️}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1.??? on 202?-??-?? ===&lt;br /&gt;
* Fixed an issue where the Chart Thresholds didn't update.&lt;br /&gt;
* Added support for configurable file-upload size restrictions, preventing oversized files from being uploaded and providing users with feedback when limits are exceeded.&lt;br /&gt;
* (Android) Fixed an issue in the WebView where some links could not be opened.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Mobile|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (Mobile)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
-&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
Due to the change of the underlying XAML technology, the existing XAMLs for the old mobile clients (pre 5.0) are no longer compatible. Please refer to [[HowTo:Convert_Xamarin_XAMLs_to_Maui]] for migrating them to the new client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Mobile|Version 5.1 (Mobile)]]&lt;br /&gt;
[[Category:Version 5.1|Version 5.1 (Mobile)]]&lt;/div&gt;</summary>
		<author><name>CWI</name></author>	</entry>

	</feed>