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

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26762</id>
		<title>Version 4.7 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26762"/>
				<updated>2024-05-27T06:43:19Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 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 11.}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.22 on 2024-05-07 {{key press|Android: Store Beta}} {{key press|iOS Store Beta}} {{key press|UWP: App Center}}  ===&lt;br /&gt;
* Fixed an issue where the selective list of a link property appears empty/unavailable.&lt;br /&gt;
* Fixed an issue where it's not possible to create annotations when logged in using SSO.&lt;br /&gt;
* Fixed an issue where setting MRO Tasks to N/A led to a crash of the app.&lt;br /&gt;
&lt;br /&gt;
=== 4.7.21 on 2024-05-06 {{key press|Android: Store Beta}} {{key press|iOS Store Beta}} {{key press|UWP: App Center}}  ===&lt;br /&gt;
* Fixed an error during loading PDF documents with empty annotations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.20 on 2024-05-03 {{key press|Android: Store Beta}} {{key press|iOS Store Beta}} {{key press|UWP: App Center}}  ===&lt;br /&gt;
* Fixed an issue where reverting a property value led to saving all other properties with unsaved changes on the related ContentViewModel.&lt;br /&gt;
* Added the [[XAML_Tips#Auto_saving|AutoSaveDocumentsOnPageClose]] property to enable auto saving of documents when navigating away.&lt;br /&gt;
* Fixed an issue where the textbox of string properties appeared too small. &lt;br /&gt;
* (Android) Fixed an issue where the &amp;quot;Text Length Hint&amp;quot; was not centered.&lt;br /&gt;
* (Android) Fixed a permission related issue during the app's first launch.&lt;br /&gt;
* Fixed an issue where setting value ranges on DateTime query criteria do not always work.&lt;br /&gt;
* (iOS) Fixed an issue where the content of the side menu can be covered by the devices' notch.&lt;br /&gt;
* Fixed an Issue that causes annotations not being loaded on large PDFs.&lt;br /&gt;
* (iOS) Fixed an issue where the building level buttons are not always visible on some iOS devices (e.g. iPhone 8).&lt;br /&gt;
* Fixed an issue where items sometimes changed their sorting order when changing them fast in a row.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.10 on 2024-04-09 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed some wrong Polish translations.&lt;br /&gt;
* When the SSO option is turned on and a UBIK user session expires, the client now tries to use the same SSO token if it has not expired yet.&lt;br /&gt;
* Optimized the startup process so that the app doesn't show the &amp;quot;...app not responding...&amp;quot; (ANR) warning on some Android 13 devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.9 on 2024-03-20 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the user can not interact with the document view (Image, PDF, 3D, Video, etc.).&lt;br /&gt;
* The UBIKDocumentContentArea template is now customizable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.8 on 2024-03-18 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where branch downloads only work on objects with the new [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.6 on 2024-03-15 {{key press|App Center}} ===&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* Fixed an issue where the objects were not sorted after creating or changing them.&lt;br /&gt;
* The download behavior of an object classified by [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.3 on 2024-03-13 {{key press|App Center}}  ===&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.2 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the PDF document view can sometimes be covered by other views. (Only happened in certain complex customizing with e.g. CarouselView.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the XAML deployment didn't get redeployed after deletion.&lt;br /&gt;
* Fixed an issue where the 3D document specific content (&amp;quot;Place in ARCore&amp;quot;) can sometimes be displayed by mistake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&lt;br /&gt;
* Android: When changing multiple objects at the same time (e.g. via [[Multi_Select_(UBIK_Client)|Mass Edit]]), the sorting order might be messed up and some of the items might appear duplicated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
⚠️ UBIKThemes will fail to load if the resource &amp;lt;vm:ViewModelLocator ... /&amp;gt; is left in it from a customizing predating 4.7. This is due to a refactoring of the ViewModelLocator. Simply remove the resource to fix the issue.&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 4.7 Xamarin]]&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Version 4.7 Xamarin|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.7 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26761</id>
		<title>Version 4.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26761"/>
				<updated>2024-05-27T06:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.7.? on 2024-05-?? {{key press|Store Beta}} */&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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.? on 2024-05-?? {{key press|Store Beta}} ===&lt;br /&gt;
* Fixed an issue where the refresh button is sometimes disabled.&lt;br /&gt;
* Fixed an issue where setting MRO Tasks to N/A led to a crash of the app.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.7 (WinX)]]&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.7 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
=== 4.7.4 on 2024-05-07 {{key press|Store Beta}} ===&lt;br /&gt;
* Fixed an issue where the selective list of a link property appears empty/unavailable.&lt;br /&gt;
* Fixed an issue where it's not possible to create annotations when logged in using SSO.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.3 on 2024-05-03 {{key press|Store Beta}}  ===&lt;br /&gt;
* Fixed an issue where the user gets presented with an unnecessary dialog at the end of the SSO login process.&lt;br /&gt;
* When the SSO option is turned on and a UBIK user session expires, the client now tries to use the same SSO token if it has not expired yet.&lt;br /&gt;
* Fixed an issue where pressing the previous button in the PDFViewer led to a freezing of the app.&lt;br /&gt;
* Optimized the app startup process.&lt;br /&gt;
* Fixed an issue where reverting a property value led to saving all other properties with unsaved changes on the related ContentViewModel.&lt;br /&gt;
* Added the [[XAML_Tips#Auto_saving|AutoSaveDocumentsOnPageClose]] property to enable auto saving of documents when navigating away.&lt;br /&gt;
* Fixed an issue where the app doesn't select a camera by default and the in app camera views (POI, scan, etc.) do not function until one is selected by the user.&lt;br /&gt;
* Fixed an issue where setting value ranges on DateTime query criteria do not always work.&lt;br /&gt;
* Fixed an issue where the scan window in the string editor can not be displayed on Windows 11.&lt;br /&gt;
* Fixed an issue that prevented the property UI from being updated properly when deleting a value or cancel editing.&lt;br /&gt;
* Fixed an issue where the app might freeze or crash when you flip through a large list of PDF documents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.2 on 2024-03-18 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where branch downloads only work on objects with the new [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-03-15 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the placeholder text in the property drop down list (&amp;quot;Select&amp;quot;) is not localized.&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* The download behavior of an object classified by [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* Bing Road Maps is now supported as a new map type.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes =&lt;br /&gt;
&lt;br /&gt;
Namespace change(s):&lt;br /&gt;
* ViewModelLocator: From &amp;lt;code&amp;gt;xmlns:vm=&amp;quot;using:UBIK.WinX.ViewModel&amp;quot;&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;xmlns:uiservices=&amp;quot;using:UBIK.UI.Services&amp;quot;&amp;lt;/code&amp;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 4.7 (WinX)]]&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.7 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26328</id>
		<title>Version 4.7 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26328"/>
				<updated>2024-04-23T13:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.7.11 on 2024-??-?? {{key press|App Center}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 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 11.}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.11 on 2024-??-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where reverting a property value led to saving all other properties with unsaved changes on the related ContentViewModel.&lt;br /&gt;
* Added the [[XAML_Tips#Auto_saving|AutoSaveDocumentsOnPageClose]] property to enable auto saving of documents when navigating away.&lt;br /&gt;
* Fixed an issue where the textbox of string properties appeared too small. &lt;br /&gt;
* Fixed an issue where the &amp;quot;Text Length Hint&amp;quot; was not centered on android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Version 4.7 Xamarin|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.7 Xamarin]]&lt;br /&gt;
&lt;br /&gt;
=== 4.7.10 on 2024-04-09 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed some wrong Polish translations.&lt;br /&gt;
* When the SSO option is turned on and a UBIK user session expires, the client now tries to use the same SSO token if it has not expired yet.&lt;br /&gt;
* Optimized the startup process so that the app doesn't show the &amp;quot;...app not responding...&amp;quot; (ANR) warning on some Android 13 devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.9 on 2024-03-20 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the user can not interact with the document view (Image, PDF, 3D, Video, etc.).&lt;br /&gt;
* The UBIKDocumentContentArea template is now customizable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.8 on 2024-03-18 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where branch downloads only work on objects with the new [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.6 on 2024-03-15 {{key press|App Center}} ===&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* Fixed an issue where the objects were not sorted after creating or changing them.&lt;br /&gt;
* The download behavior of an object classified by [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.3 on 2024-03-13 {{key press|App Center}}  ===&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.2 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the PDF document view can sometimes be covered by other views. (Only happened in certain complex customizing with e.g. CarouselView.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the XAML deployment didn't get redeployed after deletion.&lt;br /&gt;
* Fixed an issue where the 3D document specific content (&amp;quot;Place in ARCore&amp;quot;) can sometimes be displayed by mistake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
⚠️ UBIKThemes will fail to load if &amp;lt;vm:ViewModelLocator ... /&amp;gt; is left in it from a customizing predating 4.7, due to a refactoring of the ViewModelLocator. Simply remove the resource to fix the issue.&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 4.7 Xamarin]]&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Version 4.7 Xamarin|Version 4.7 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.7 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26159</id>
		<title>Version 4.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26159"/>
				<updated>2024-04-02T10:56:29Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.? on 2024-0?-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the user gets presented with an unnecessary dialog at the end of the SSO login process.&lt;br /&gt;
* When the SSO option is turned on and a UBIK user session expires, the client now tries to use the same SSO token if it has not expired yet.&lt;br /&gt;
* Fixed an issue where pressing the previous button in the PDFViewer led to a freezing of the app.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.2 on 2024-03-18 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where branch downloads only work on objects with the new [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-03-15 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the placeholder text in the property drop down list (&amp;quot;Select&amp;quot;) is not localized.&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* The download behavior of an object classified by [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* Bing Road Maps is now supported as a new map type.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&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 4.7 (WinX)]]&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.7 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Branch_Download&amp;diff=26019</id>
		<title>Branch Download</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Branch_Download&amp;diff=26019"/>
				<updated>2024-03-15T10:41:01Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &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;
== 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 bottom bar (UWP)&lt;br /&gt;
File:UI_Xamarin_Branch_Download_Page_Menu.png|button in page menu (Xamarin)&lt;br /&gt;
File:UI_Xamarin_Branch_Download_Item_Swipe.png|button in item swipe menu (Xamarin)&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;
== 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 Xamarin 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;
== 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:Version 3.8|Branch Download]]&lt;br /&gt;
[[Category:WinX|Branch Download]]&lt;br /&gt;
[[Category:Xamarin|Branch Download]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26017</id>
		<title>Version 4.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26017"/>
				<updated>2024-03-15T10:03:11Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-??-?? {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the placeholder text in the property drop down list (&amp;quot;Select&amp;quot;) is not localized.&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* The download behavior of an object classified by [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* Bing Road Maps is now supported as a new map type.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26016</id>
		<title>Version 4.7 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26016"/>
				<updated>2024-03-15T10:00:47Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.4 on 2024-03-?? ===&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* Fixed an issue where the objects were not sorted after creating or changing them.&lt;br /&gt;
* The download behavior of an object classified by [https://wiki.augmensys.com/index.php?title=OFFLINE_SYNC_LEVEL_CLASSIFICATION OFFLINE_SYNC_LEVEL_CLASSIFICATION] can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.3 on 2024-03-13 {{key press|App Center}}  ===&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.2 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the PDF document view can sometimes be covered by other views. (Only happened in certain complex customizing with e.g. CarouselView.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the XAML deployment didn't get redeployed after deletion.&lt;br /&gt;
* Fixed an issue where the 3D document specific content (&amp;quot;Place in ARCore&amp;quot;) can sometimes be displayed by mistake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.7 Xamarin|Version 4.7 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26015</id>
		<title>Version 4.7 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=26015"/>
				<updated>2024-03-15T09:58:20Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.4 on 2024-03-?? ===&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* Fixed an issue where the objects were not sorted after creating or changing them.&lt;br /&gt;
* The download behavior of an object classified by OFFLINE_SYNC_LEVEL_CLASSIFICATION can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.3 on 2024-03-13 {{key press|App Center}}  ===&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.2 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the PDF document view can sometimes be covered by other views. (Only happened in certain complex customizing with e.g. CarouselView.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-03-12 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the XAML deployment didn't get redeployed after deletion.&lt;br /&gt;
* Fixed an issue where the 3D document specific content (&amp;quot;Place in ARCore&amp;quot;) can sometimes be displayed by mistake.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.7 Xamarin|Version 4.7 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26014</id>
		<title>Version 4.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=26014"/>
				<updated>2024-03-15T09:57:49Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.1 on 2024-??-?? {{key press|App Center}}  ===&lt;br /&gt;
* UBIK now supports properties with [[Min_Max_Properties|minimum and maximum values]].&lt;br /&gt;
* Fixed an issue where the placeholder text in the property drop down list (&amp;quot;Select&amp;quot;) is not localized.&lt;br /&gt;
* An error when refreshing the OIDC token in a special case was fixed.&lt;br /&gt;
* Excluded Queries from changed objects.&lt;br /&gt;
* The download behavior of an object classified by OFFLINE_SYNC_LEVEL_CLASSIFICATION can now be configured to download a certain amount of children levels instead of infinite levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.7.0 on 2024-03-01 {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* Bing Road Maps is now supported as a new map type.&lt;br /&gt;
* UBIK can also find matching [[OCR#Online_search|online results for OCR scans]] now.&lt;br /&gt;
* Fixed an issue where it's not always possible to revert/reset changes on queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=25928</id>
		<title>Version 4.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=25928"/>
				<updated>2024-02-21T14:19:35Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.7.? on 2024-??-?? {{key press|App Center}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.? on 2024-??-?? {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
* Bing Road Maps is now supported as a new map type.&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 4.7|Version 4.7 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View_(Xamarin)&amp;diff=25927</id>
		<title>Map View (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View_(Xamarin)&amp;diff=25927"/>
				<updated>2024-02-21T14:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: Redirected page to Map View&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Map View]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Map View (Xamarin)]]&lt;br /&gt;
[[Category:Version 1.1|Map View (Xamarin)]]&lt;br /&gt;
[[Category:Xamarin|Map View (Xamarin)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25926</id>
		<title>Map View</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25926"/>
				<updated>2024-02-21T14:00:32Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Similar to the [[Map_View|map view on our other {{UBIK}} clients]], the Xamarin version displays Points of Interest (POIs) and other objects with Geo information on world maps.&lt;br /&gt;
&lt;br /&gt;
= Base Map =&lt;br /&gt;
A world map is always displayed as the base layer of the map view. Depending on the &amp;quot;Map Type&amp;quot; setting (in the &amp;quot;AR&amp;quot; tab/category), different maps are used.&lt;br /&gt;
* Standard (Open Street Map).&lt;br /&gt;
* Satellite (Bing Maps).&lt;br /&gt;
* Road (Bing Maps).{{Version/XamarinSince|4.5}}{{Version/WinXSince|4.7}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;280&amp;quot; heights=&amp;quot;260&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_Xamarin_Map_Road.png|alt=Road Map&lt;br /&gt;
File:UI_Xamarin_Map_Satellite.png|alt=Satellite Map&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some basic UI options commonly seen in map applications are available as well. For example, an indicator for the current device position, buttons to center around the current position, etc.&lt;br /&gt;
&lt;br /&gt;
== Customizable tile source for Bing road maps {{Version/XamarinSince|4.5}}{{Version/WinXSince|4.7}} ==&lt;br /&gt;
Bing maps support many parameters and offer multiple servers to deliver map tiles. {{UBIK}} allows the user to customize the &amp;lt;code&amp;gt;BingRoadTilesUrl&amp;lt;/code&amp;gt; in a profile to achieve the following.&lt;br /&gt;
* Use different servers to get the more reliable and suitable tiles service if necessary;&lt;br /&gt;
* Specify a language/culture in which the tiles should be delivered;&lt;br /&gt;
* Or even request different types of Bing map tiles.&lt;br /&gt;
&lt;br /&gt;
By default (namely &amp;lt;code&amp;gt;BingRoadTilesUrl&amp;lt;/code&amp;gt; is unspecified), the following URL pattern is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://ak.dynamic.t{s}.tiles.virtualearth.net/comp/ch/{quadkey}?mkt=en-US&amp;amp;amp;amp;it=G,L&amp;amp;amp;amp;shading=hill&amp;amp;amp;amp;og=2290&amp;amp;amp;amp;n=z&amp;amp;amp;amp;token={k}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, all tiles are delivered in English since that's requested through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=en-US&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Please refer to [https://learn.microsoft.com/en-us/bingmaps/rest-services/common-parameters-and-types/supported-culture-codes supported culture codes] from Microsoft when you want tiles in other languages.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Microsoft also provides a Chinese server URL pattern&amp;lt;br/&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://dynamic.t{s}.tiles.ditu.live.com/comp/ch/{quadkey}?mkt=zh-CN&amp;amp;amp;amp;it=G,L&amp;amp;amp;amp;ur=CN&amp;amp;amp;amp;og=804&amp;amp;amp;amp;n=z&amp;amp;amp;amp;token={k}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; Just for clarification, it is also possible to request map tiles in Chinese using the default URL pattern as long as the correct culture code is specified, namely &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-Hans&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-Hant&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-CN&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; But the dedicated one might deliver tiles that comply more to the local laws. Please choose one that you see fit.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= UBIK Map Content =&lt;br /&gt;
On the base map, {{UBIK}} can display different kinds of content with Geo information.&lt;br /&gt;
&lt;br /&gt;
== Geo POIs ==&lt;br /&gt;
For each object carrying [[SYSCLS_GEO|Geo coordinates]], {{UBIK}} displays a map pin on the map accordingly. The object's icon (if any) is also included in the map pin.&lt;br /&gt;
&lt;br /&gt;
Like in the [[POI_View_(Xamarin)|POI view]], you can select or deselect POIs. The options available on selected POIs are described in section [[POI_View_(Xamarin)#Interact_with_POIs|&amp;quot;Interact with POIs&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
== Map Overlays ==&lt;br /&gt;
[[File:UI_Xamarin_Map_Overlay.png|thumb|alt=Map Overlay|Map Overlay]]&lt;br /&gt;
Sometimes more detailed maps are needed for specific and smaller regions, e.g. a factory. Map overlays are such image based maps that are displayed on top of the base map. The placement of an overlay is determined by [[SYSCLS_MAPOVERLAY|certain configurations on the overlay object]].&lt;br /&gt;
&lt;br /&gt;
Here's an article on how to [[HowTo:Create_Image_Map_Overlays]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Map Shapes ==&lt;br /&gt;
[[File:UI_Xamarin_Map_Shape.png|thumb|alt=Map Shape|Map Shape]]&lt;br /&gt;
Map shapes can be considered as map overlays defined in a different data format.&lt;br /&gt;
* Like map overlays, they are displayed on top of the base map;&lt;br /&gt;
* Unlike map overlays, their display content as well as placements on the map are defined in [https://wiki.openstreetmap.org/wiki/Shapefiles shapefiles]. Details can be found [[SYSCLS_MAPSHAPE|here]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Group, Building &amp;amp; Level ==&lt;br /&gt;
The way Geo POIs can be grouped and displayed accordingly in the map view is exactly the same as in the [[POI_View_(Xamarin)#Group.2C_Building_.26_Level|POI view]]. In addition, other types of map content like map overlays &amp;amp; shapes can also belong to groups, buildings or levels. The displaying of them follows the same rules.&lt;br /&gt;
&lt;br /&gt;
== Show on map {{Version/XamarinSince|1.3}} ==&lt;br /&gt;
When you execute the NavigateToMapPageCommand from a context object (e.g. ContentViewModel, ContentPageViewModel, ContentListItemViewModel, etc.), the map view will be opened with that context object. This includes:&lt;br /&gt;
* Entering necessary POI groups, buildings or building levels so that the context object is visible on the map;&lt;br /&gt;
* Centering the map around the context object;&lt;br /&gt;
* Selecting the POI for the context object automatically. (Once you start interacting with the map by e.g. entering another building, the selected states will most likely change.)&lt;br /&gt;
&lt;br /&gt;
{{Attention|Unlike executing the NavigateToMapPageCommand from a place without a context object, doing so with one will additionally check the validity of that object, namely if it at least [[SYSCLS_GEO|has geo information]]. If not, the command will be disabled.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:WinX|Map View]]&lt;br /&gt;
[[Category:Xamarin|Map View]]&lt;br /&gt;
[[Category:Client|Map View]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25925</id>
		<title>Map View</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25925"/>
				<updated>2024-02-21T13:59:16Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Similar to the [[Map_View|map view on our other {{UBIK}} clients]], the Xamarin version displays Points of Interest (POIs) and other objects with Geo information on world maps.&lt;br /&gt;
&lt;br /&gt;
= Base Map =&lt;br /&gt;
A world map is always displayed as the base layer of the map view. Depending on the &amp;quot;Map Type&amp;quot; setting (in the &amp;quot;AR&amp;quot; tab/category), different maps are used.&lt;br /&gt;
* Standard (Open Street Map).&lt;br /&gt;
* Satellite (Bing Maps).&lt;br /&gt;
* Road (Bing Maps).{{Version/XamarinSince|4.5}}{{Version/WinXSince|4.7}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;280&amp;quot; heights=&amp;quot;260&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_Xamarin_Map_Road.png|alt=Road Map&lt;br /&gt;
File:UI_Xamarin_Map_Satellite.png|alt=Satellite Map&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some basic UI options commonly seen in map applications are available as well. For example, an indicator for the current device position, buttons to center around the current position, etc.&lt;br /&gt;
&lt;br /&gt;
== Customizable tile source for Bing road maps {{Version/XamarinSince|4.5}}{{Version/WinXSince|4.7}} ==&lt;br /&gt;
Bing maps support many parameters and offer multiple servers to deliver map tiles. {{UBIK}} allows the user to customize the &amp;lt;code&amp;gt;BingRoadTilesUrl&amp;lt;/code&amp;gt; in a profile to achieve the following.&lt;br /&gt;
* Use different servers to get the more reliable and suitable tiles service if necessary;&lt;br /&gt;
* Specify a language/culture in which the tiles should be delivered;&lt;br /&gt;
* Or even request different types of Bing map tiles.&lt;br /&gt;
&lt;br /&gt;
By default (namely &amp;lt;code&amp;gt;BingRoadTilesUrl&amp;lt;/code&amp;gt; is unspecified), the following URL pattern is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://ak.dynamic.t{s}.tiles.virtualearth.net/comp/ch/{quadkey}?mkt=en-US&amp;amp;amp;amp;it=G,L&amp;amp;amp;amp;shading=hill&amp;amp;amp;amp;og=2290&amp;amp;amp;amp;n=z&amp;amp;amp;amp;token={k}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, all tiles are delivered in English since that's requested through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=en-US&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Please refer to [https://learn.microsoft.com/en-us/bingmaps/rest-services/common-parameters-and-types/supported-culture-codes supported culture codes] from Microsoft when you want tiles in other languages.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Microsoft also provides a Chinese server URL pattern&amp;lt;br/&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://dynamic.t{s}.tiles.ditu.live.com/comp/ch/{quadkey}?mkt=zh-CN&amp;amp;amp;amp;it=G,L&amp;amp;amp;amp;ur=CN&amp;amp;amp;amp;og=804&amp;amp;amp;amp;n=z&amp;amp;amp;amp;token={k}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; Just for clarification, it is also possible to request map tiles in Chinese using the default URL pattern as long as the correct culture code is specified, namely &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-Hans&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-Hant&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-CN&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; But the dedicated one might deliver tiles that comply more to the local laws. Please choose one that you see fit.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= UBIK Map Content =&lt;br /&gt;
On the base map, {{UBIK}} can display different kinds of content with Geo information.&lt;br /&gt;
&lt;br /&gt;
== Geo POIs ==&lt;br /&gt;
For each object carrying [[SYSCLS_GEO|Geo coordinates]], {{UBIK}} displays a map pin on the map accordingly. The object's icon (if any) is also included in the map pin.&lt;br /&gt;
&lt;br /&gt;
Like in the [[POI_View_(Xamarin)|POI view]], you can select or deselect POIs. The options available on selected POIs are described in section [[POI_View_(Xamarin)#Interact_with_POIs|&amp;quot;Interact with POIs&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
== Map Overlays ==&lt;br /&gt;
[[File:UI_Xamarin_Map_Overlay.png|thumb|alt=Map Overlay|Map Overlay]]&lt;br /&gt;
Sometimes more detailed maps are needed for specific and smaller regions, e.g. a factory. Map overlays are such image based maps that are displayed on top of the base map. The placement of an overlay is determined by [[SYSCLS_MAPOVERLAY|certain configurations on the overlay object]].&lt;br /&gt;
&lt;br /&gt;
Here's an article on how to [[HowTo:Create_Image_Map_Overlays]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Map Shapes ==&lt;br /&gt;
[[File:UI_Xamarin_Map_Shape.png|thumb|alt=Map Shape|Map Shape]]&lt;br /&gt;
Map shapes can be considered as map overlays defined in a different data format.&lt;br /&gt;
* Like map overlays, they are displayed on top of the base map;&lt;br /&gt;
* Unlike map overlays, their display content as well as placements on the map are defined in [https://wiki.openstreetmap.org/wiki/Shapefiles shapefiles]. Details can be found [[SYSCLS_MAPSHAPE|here]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Group, Building &amp;amp; Level ==&lt;br /&gt;
The way Geo POIs can be grouped and displayed accordingly in the map view is exactly the same as in the [[POI_View_(Xamarin)#Group.2C_Building_.26_Level|POI view]]. In addition, other types of map content like map overlays &amp;amp; shapes can also belong to groups, buildings or levels. The displaying of them follows the same rules.&lt;br /&gt;
&lt;br /&gt;
== Show on map {{Version/XamarinSince|1.3}} ==&lt;br /&gt;
When you execute the NavigateToMapPageCommand from a context object (e.g. ContentViewModel, ContentPageViewModel, ContentListItemViewModel, etc.), the map view will be opened with that context object. This includes:&lt;br /&gt;
* Entering necessary POI groups, buildings or building levels so that the context object is visible on the map;&lt;br /&gt;
* Centering the map around the context object;&lt;br /&gt;
* Selecting the POI for the context object automatically. (Once you start interacting with the map by e.g. entering another building, the selected states will most likely change.)&lt;br /&gt;
&lt;br /&gt;
{{Attention|Unlike executing the NavigateToMapPageCommand from a place without a context object, doing so with one will additionally check the validity of that object, namely if it at least [[SYSCLS_GEO|has geo information]]. If not, the command will be disabled.}}&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View_(Xamarin)&amp;diff=25924</id>
		<title>Map View (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View_(Xamarin)&amp;diff=25924"/>
				<updated>2024-02-21T13:51:25Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: Redirected page to Map View (outdated)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #REDIRECT [[Map View (outdated)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Map View (Xamarin)]]&lt;br /&gt;
[[Category:Version 1.1|Map View (Xamarin)]]&lt;br /&gt;
[[Category:Xamarin|Map View (Xamarin)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25923</id>
		<title>Map View</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25923"/>
				<updated>2024-02-21T13:51:07Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Similar to the [[Map_View|map view on our other {{UBIK}} clients]], the Xamarin version displays Points of Interest (POIs) and other objects with Geo information on world maps.&lt;br /&gt;
&lt;br /&gt;
= Base Map =&lt;br /&gt;
A world map is always displayed as the base layer of the map view. Depending on the &amp;quot;Map Type&amp;quot; setting (in the &amp;quot;AR&amp;quot; tab/category), different maps are used.&lt;br /&gt;
* Standard (Open Street Map).&lt;br /&gt;
* Satellite (Bing Maps).&lt;br /&gt;
* Road (Bing Maps).{{Version/XamarinSince|4.5}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;280&amp;quot; heights=&amp;quot;260&amp;quot;&amp;gt;&lt;br /&gt;
File:UI_Xamarin_Map_Road.png|alt=Road Map&lt;br /&gt;
File:UI_Xamarin_Map_Satellite.png|alt=Satellite Map&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some basic UI options commonly seen in map applications are available as well. For example, an indicator for the current device position, buttons to center around the current position, etc.&lt;br /&gt;
&lt;br /&gt;
== Customizable tile source for Bing road maps {{Version/XamarinSince|4.5}} ==&lt;br /&gt;
Bing maps support many parameters and offer multiple servers to deliver map tiles. {{UBIK}} allows the user to customize the &amp;lt;code&amp;gt;BingRoadTilesUrl&amp;lt;/code&amp;gt; in a profile to achieve the following.&lt;br /&gt;
* Use different servers to get the more reliable and suitable tiles service if necessary;&lt;br /&gt;
* Specify a language/culture in which the tiles should be delivered;&lt;br /&gt;
* Or even request different types of Bing map tiles.&lt;br /&gt;
&lt;br /&gt;
By default (namely &amp;lt;code&amp;gt;BingRoadTilesUrl&amp;lt;/code&amp;gt; is unspecified), the following URL pattern is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://ak.dynamic.t{s}.tiles.virtualearth.net/comp/ch/{quadkey}?mkt=en-US&amp;amp;amp;amp;it=G,L&amp;amp;amp;amp;shading=hill&amp;amp;amp;amp;og=2290&amp;amp;amp;amp;n=z&amp;amp;amp;amp;token={k}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, all tiles are delivered in English since that's requested through &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=en-US&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. Please refer to [https://learn.microsoft.com/en-us/bingmaps/rest-services/common-parameters-and-types/supported-culture-codes supported culture codes] from Microsoft when you want tiles in other languages.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Microsoft also provides a Chinese server URL pattern&amp;lt;br/&amp;gt; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://dynamic.t{s}.tiles.ditu.live.com/comp/ch/{quadkey}?mkt=zh-CN&amp;amp;amp;amp;it=G,L&amp;amp;amp;amp;ur=CN&amp;amp;amp;amp;og=804&amp;amp;amp;amp;n=z&amp;amp;amp;amp;token={k}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; Just for clarification, it is also possible to request map tiles in Chinese using the default URL pattern as long as the correct culture code is specified, namely &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-Hans&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-Hant&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;mkt=zh-CN&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; But the dedicated one might deliver tiles that comply more to the local laws. Please choose one that you see fit.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= UBIK Map Content =&lt;br /&gt;
On the base map, {{UBIK}} can display different kinds of content with Geo information.&lt;br /&gt;
&lt;br /&gt;
== Geo POIs ==&lt;br /&gt;
For each object carrying [[SYSCLS_GEO|Geo coordinates]], {{UBIK}} displays a map pin on the map accordingly. The object's icon (if any) is also included in the map pin.&lt;br /&gt;
&lt;br /&gt;
Like in the [[POI_View_(Xamarin)|POI view]], you can select or deselect POIs. The options available on selected POIs are described in section [[POI_View_(Xamarin)#Interact_with_POIs|&amp;quot;Interact with POIs&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
== Map Overlays ==&lt;br /&gt;
[[File:UI_Xamarin_Map_Overlay.png|thumb|alt=Map Overlay|Map Overlay]]&lt;br /&gt;
Sometimes more detailed maps are needed for specific and smaller regions, e.g. a factory. Map overlays are such image based maps that are displayed on top of the base map. The placement of an overlay is determined by [[SYSCLS_MAPOVERLAY|certain configurations on the overlay object]].&lt;br /&gt;
&lt;br /&gt;
Here's an article on how to [[HowTo:Create_Image_Map_Overlays]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Map Shapes ==&lt;br /&gt;
[[File:UI_Xamarin_Map_Shape.png|thumb|alt=Map Shape|Map Shape]]&lt;br /&gt;
Map shapes can be considered as map overlays defined in a different data format.&lt;br /&gt;
* Like map overlays, they are displayed on top of the base map;&lt;br /&gt;
* Unlike map overlays, their display content as well as placements on the map are defined in [https://wiki.openstreetmap.org/wiki/Shapefiles shapefiles]. Details can be found [[SYSCLS_MAPSHAPE|here]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Group, Building &amp;amp; Level ==&lt;br /&gt;
The way Geo POIs can be grouped and displayed accordingly in the map view is exactly the same as in the [[POI_View_(Xamarin)#Group.2C_Building_.26_Level|POI view]]. In addition, other types of map content like map overlays &amp;amp; shapes can also belong to groups, buildings or levels. The displaying of them follows the same rules.&lt;br /&gt;
&lt;br /&gt;
== Show on map {{Version/XamarinSince|1.3}} ==&lt;br /&gt;
When you execute the NavigateToMapPageCommand from a context object (e.g. ContentViewModel, ContentPageViewModel, ContentListItemViewModel, etc.), the map view will be opened with that context object. This includes:&lt;br /&gt;
* Entering necessary POI groups, buildings or building levels so that the context object is visible on the map;&lt;br /&gt;
* Centering the map around the context object;&lt;br /&gt;
* Selecting the POI for the context object automatically. (Once you start interacting with the map by e.g. entering another building, the selected states will most likely change.)&lt;br /&gt;
&lt;br /&gt;
{{Attention|Unlike executing the NavigateToMapPageCommand from a place without a context object, doing so with one will additionally check the validity of that object, namely if it at least [[SYSCLS_GEO|has geo information]]. If not, the command will be disabled.}}&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25922</id>
		<title>Map View</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View&amp;diff=25922"/>
				<updated>2024-02-21T13:36:59Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: CBR moved page Map View to Map View (outdated)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Map View (outdated)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Map_View_(outdated)&amp;diff=25921</id>
		<title>Map View (outdated)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Map_View_(outdated)&amp;diff=25921"/>
				<updated>2024-02-21T13:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: CBR moved page Map View to Map View (outdated)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Map View is the view that displays Points of Interests (POI’s) on a base map. Both clients, Android and WinX, are using [https://www.openstreetmap.org/ Open Street Maps (OSM)] for its map source materials. &lt;br /&gt;
&lt;br /&gt;
== Google Maps (Android) ==&lt;br /&gt;
[[File:UI_Android_Google_Play_Services_Missing.png|thumb|alt=Google Play Services Missing|Google Play Services Missing]]&lt;br /&gt;
Since {{UBIK}} Android 2.5.0, Open Street Maps (OSM) is used instead of Google Maps; hence, no Google Play Services are required anymore. {{Version/AndroidSince|2.5.0}}&lt;br /&gt;
&lt;br /&gt;
Up to Version 2.5.0 {{UBIK}} integrates [https://developers.google.com/maps/documentation/android/ Google Maps] which requires [https://developers.google.com/android/guides/overview Google Play Services]. If the latter is not available on a device, {{UBIK}} can still be installed and most of its features will still function. However, the map view will not be accessible and a notification will be shown in that case. {{Version/AndroidSince|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
== Visualization ==&lt;br /&gt;
[[File:map_view.png|thumb|alt=Map view|Map view (Android)]]&lt;br /&gt;
[[File:UI_WinX_Map_View.png|thumb|alt=Map view|Map view (Windows)]]&lt;br /&gt;
A typical Map view consists of the base map and some addtional, platform specific buttons and menus:&lt;br /&gt;
* Android: top map menu, bottom navigation menu, location button, zoom buttons;&lt;br /&gt;
* Windows: left buttons bar and a current location/orientation indicator(arrow).&lt;br /&gt;
&lt;br /&gt;
=== Base map ===&lt;br /&gt;
The base map typically displays all the [[SYSCLS_GEO|Geo content]] according to the rules described below. Different objects are represented by different icons on the map.&lt;br /&gt;
&lt;br /&gt;
The rules regarding what content should be displayed are as follows:&lt;br /&gt;
* The object has to be a Geo content or a [[Geographies|Geography]]{{Version/WinXSince|2.5.3}}{{Version/AndroidSince|2.5.5}} content&lt;br /&gt;
* If a [[HowTo:Use_POI_Groups|POI group]] is currently open/active, objects that are shown are:&lt;br /&gt;
** [[SYSCLS_POIGROUPITEM|POI group items]] that belong to the current group;&lt;br /&gt;
** Objects that are '''not''' POI group items;&lt;br /&gt;
* If a [[#Map_layers_button| map layer]] is currently selected, objects that are shown are:&lt;br /&gt;
** [[SYSCLS_MAPITEM|Items]] of the current Map Layer;&lt;br /&gt;
** Objects that are '''not''' map layer items.&lt;br /&gt;
* If there is an object as the context of the map view (e.g. User opens a Geo content in the map), that object is displayed in addition to whatever else is.&lt;br /&gt;
* If an Image [[SYSCLS_MAPOVERLAY| Ground overlay]] is configured.&lt;br /&gt;
** This overlays are used to [[Image Map Overlays| visualize building schemes on the map]].  &lt;br /&gt;
{{Hint|Objects have to pass all the checks above in order to be shown.}}&lt;br /&gt;
&lt;br /&gt;
{{Attention|Before {{Version/Android|2.4.3}} objects had to be in the [[SYSREL_INFRASTRUCTURE|Infrastructure]] in order to be shown at all.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Map menu ===&lt;br /&gt;
&lt;br /&gt;
==== Map layers button ====&lt;br /&gt;
[[File:map_layer_dialog.png|thumb|alt=Map layer dialog|Map layer dialog (Android)]]&lt;br /&gt;
[[File:UI_WinX_Map_Layer_Panel.png|thumb|alt=Map Layer Panel|Map Layer Panel (Windows)]]&lt;br /&gt;
The Geo content can be configured on the server side to belong to a certain layer.&lt;br /&gt;
By pressing this button, a dialog will be displayed to the user, containing all the available layers. By checking off the layers in the dialog box, the user is able to decide to view the Geo content belonging to the checked layers.&lt;br /&gt;
&lt;br /&gt;
==== Map types setting (Windows) ====&lt;br /&gt;
[[File:UI_WinX_Map_Type_Setting.png|thumb|alt=Map Types|Map Types (Windows)]]&lt;br /&gt;
The user can choose different map types (Road and Satellite) for the base map. This setting can be found in the &amp;quot;Map&amp;quot; section of the application settings.&lt;br /&gt;
&lt;br /&gt;
==== Map types setting (Android) ====&lt;br /&gt;
When Google Maps is used as a basic technology, the user can choose different map types (Normal, Satellite and Hybrid) for the base map. This setting can be found in the Actionbar on the far right.&lt;br /&gt;
&lt;br /&gt;
As a default technology, Open Street Map (OSM) is used from {{Version/Android|2.5.0}} on though. There, only Normal is available currently. Satellite is available {{Version/AndroidSince|2.5.3}}.&lt;br /&gt;
&lt;br /&gt;
=== Map Control ===&lt;br /&gt;
==== Initial zoom behaviour (Android) ====&lt;br /&gt;
Everytime the MapView gets openend, {{UBIK}} zooms to a specified location using a specified zoom level. Thereby following behaviour is applied:&lt;br /&gt;
* If the Map View gets openend for the first time after login, {{UBIK}} zooms to the [[Settings#AR_settings|DefaultMapZoomLocation]] using the [[Settings#AR_settings|StandardMapZoomLevel]].&lt;br /&gt;
* When closing the Map View, the location and zoom level of the shown map section gets saved. If the Map View gets openend again during the current session, {{UBIK}} zooms to the saved location using the saved zoom level.&lt;br /&gt;
* If the Map View gets openend via the Context Action [[UBIK_Client_Basics#Context_Menu|Show in map]], {{UBIK}} zooms to the content´s location using the [[Settings#AR_settings|StandardMapZoomLevel]].&lt;br /&gt;
&lt;br /&gt;
==== Location button (Android) ====&lt;br /&gt;
This button enables the user to zoom to the current position of the mobile device using the [[Settings#AR_settings|StandardMapZoomLevel]]. If the current zoom level is already closer to earth, the location of the mobile device is centered without applying the [[Settings#AR_settings|StandardMapZoomLevel]]. This button is only shown if a location is available.&lt;br /&gt;
&lt;br /&gt;
==== Zoom buttons (Android) ====&lt;br /&gt;
The {{key press|+}} button zooms into the map, the {{key press|-}} button zooms out of the map.&lt;br /&gt;
&lt;br /&gt;
== Interaction ==&lt;br /&gt;
=== POI details ===&lt;br /&gt;
[[File:UI_WinX_Map_POI_Panel.png|thumb|alt=POI Details Panel|POI Details Panel (Windows)]]&lt;br /&gt;
On Android, clicking on an icon on the map will display a [[POI dialog|POI dialog/Info window]].&lt;br /&gt;
On Windows, clicking on an icon on the map, will display a details panel on the right side of the map page. Another click on the selected POI will deselect it and dismiss the details panel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buildings &amp;amp; Indoor Maps ===&lt;br /&gt;
See [[Building_Levels|Building Levels]] for more info.&lt;br /&gt;
&lt;br /&gt;
=== Geographies {{Version/WinXSince|2.5.3}}{{Version/AndroidSince|2.5.5}} ===&lt;br /&gt;
See [[Geographies|Geographies]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://www.openstreetmap.org/ Open Street Map]&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Map View]]&lt;br /&gt;
[[Category:Android|Map View]]&lt;br /&gt;
[[Category:WinX|Map View]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=SYSCLS_AUTO_ZOOM_CLASSIFICATION&amp;diff=25920</id>
		<title>SYSCLS AUTO ZOOM CLASSIFICATION</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=SYSCLS_AUTO_ZOOM_CLASSIFICATION&amp;diff=25920"/>
				<updated>2024-02-19T09:30:23Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ClassificationInfoBox&lt;br /&gt;
| title = Auto zoom classification&lt;br /&gt;
| name = {{PAGENAMEE}}&lt;br /&gt;
| inheritance = -&lt;br /&gt;
| namespace = System.Classification.Document&lt;br /&gt;
| purpose = Initialize zoom level&lt;br /&gt;
| version = 4.6+&lt;br /&gt;
| id = {3F6FC476-7C18-4212-A4F7-9A41821EBCD6}&lt;br /&gt;
}}&lt;br /&gt;
The automatic zoom is applied for every document classified by  SYSCLS_SCAN_AUTO_ZOOM_CLASSIFICATION as soon as it is opened in the document viewer. Currently the auto zoom is only supported for pdf documents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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=30% | Data type !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| INITIAL_ZOOM_LEVEL || {{Integer}} || initialize zoom level in %. Suggested values are (e.g. 200% =&amp;gt; Zoomed in to show the document in twice the size, 300% =&amp;gt; Zoomed in to show the document three times the size, ...).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[UBIK_WinX_Client_Basics#Auto_zoom]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Document|SYSCLS AUTO ZOOM CLASSIFICATION]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=HowTo:Debugging_UBIK&amp;diff=25884</id>
		<title>HowTo:Debugging UBIK</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=HowTo:Debugging_UBIK&amp;diff=25884"/>
				<updated>2024-02-15T13:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the most complex challenges when working on any software project is to debug unintended behavior. In {{UBIK}}, there is an inherent structure to every project, which we can exploit for debugging. Let's find out, how. &lt;br /&gt;
&lt;br /&gt;
== Quick-fix check list ==&lt;br /&gt;
&lt;br /&gt;
Many issues can be resolved by going through the following check list.&lt;br /&gt;
&lt;br /&gt;
# Check settings and configurations for typos, missing entries and other errors&lt;br /&gt;
# Restart {{UBIK}} Studio and reconnect to your DB to avoid caching issues&lt;br /&gt;
# Check whether all plugins were loaded correctly&lt;br /&gt;
# In case the custom code was changed, or {{UBIK}} was upgraded to a new version:&lt;br /&gt;
## Compile and publish the customizing (F6)&lt;br /&gt;
## Restart the Enterprise Service&lt;br /&gt;
## Restart all Web Services&lt;br /&gt;
# In case the data model for the client was changed:&lt;br /&gt;
## Rebuild and publish the ACM meta definitions using the ACM manager&lt;br /&gt;
## Restart all web services&lt;br /&gt;
# Restart the {{UBIK}} client application to make sure new meta definitions and content are received&lt;br /&gt;
&lt;br /&gt;
== A general policy for debugging ==&lt;br /&gt;
&lt;br /&gt;
Debugging can be approached methodically. Here's a basic plan for debugging software.&lt;br /&gt;
&lt;br /&gt;
# '''Reproduction''': Get all available, relevant information about the bug and confirm the problem in a test setup&lt;br /&gt;
# '''Inspection''': Inspect the actual behavior to understand the cause&lt;br /&gt;
# '''Fix''': Design and implement a solution&lt;br /&gt;
# '''Retest''': Test the fix&lt;br /&gt;
&lt;br /&gt;
== Debugging a {{UBIK}} project ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/Begin}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reproduction =&lt;br /&gt;
&lt;br /&gt;
==== Full Test System ====&lt;br /&gt;
To reproduce the problem with {{UBIK}}, you require a test setup. This usually means a local copy of the database the problem occurred with and an installation of the {{UBIK}} products relevant for the problem. It is important to use the same binaries, plugins and versions as in the system where the problem occurred.&lt;br /&gt;
Then, we can try to provoke the reported issue in the test setup. This might require getting more information about the issue.&lt;br /&gt;
&lt;br /&gt;
==== Isolation Testing ====&lt;br /&gt;
If a full test setup is not feasible, isolating a (presumably) faulty part and testing it individually often makes sense.&lt;br /&gt;
&lt;br /&gt;
In {{UBIK}} Studio, there are two tools for this:&lt;br /&gt;
* Who-Bert Debugging Tool&lt;br /&gt;
* View Test Tool&lt;br /&gt;
&lt;br /&gt;
Both can be used to test the behavior of {{UBIK}} objects (and custom code) on the server side. &lt;br /&gt;
With Who-Bert code and manually created test data, you can additionally set up a &amp;quot;mock&amp;quot; or &amp;quot;fake&amp;quot; situation, to test the behavior under very specific circumstances.&lt;br /&gt;
The View Test Tool simulates how the web service assembles data for the client, ignoring the ACM meta definitions (context, scopes etc.).&lt;br /&gt;
&lt;br /&gt;
= Inspection =&lt;br /&gt;
&lt;br /&gt;
Once you have a test setup and are able to reproduce the issue, you can inspect what's happening in detail to find out why the problem occurs.&lt;br /&gt;
This can be done either by debugging with Visual Studio, or by producing diagnostic output in the form of log entries, {{UBIK}} objects and property values, or UI customizing.&lt;br /&gt;
&lt;br /&gt;
=== Inspect the mobile client ===&lt;br /&gt;
* Use the [[Developer_Mode]] to inspect the currently visible view models and their values.&lt;br /&gt;
* Inspect the log files of the mobile client, including the web service client log.&lt;br /&gt;
&lt;br /&gt;
=== Inspect the web services or the Enterprise Service ===&lt;br /&gt;
* Inspect the log files of the web service or Enterprise Service.&lt;br /&gt;
* Modify your plugin or programmatic customizing to output log messages describing the state of your program at critical points.&lt;br /&gt;
* Modify your plugin or programmatic customizing to write diagnostic {{UBIK}} objects describing the state of your program at critical points.&lt;br /&gt;
* Use a Who-Bert script to test a specific setup and output log messages to the console.&lt;br /&gt;
&lt;br /&gt;
= Hypothesizing =&lt;br /&gt;
In order to narrow down the cause of the problem, we can try to formulate an idea of what could have gone wrong. Optimally, we actually go and look for a proof, to see it happen in action, but it's always good to know potential error sources. In general, there are several common types of problems, and from another perspective, a set of common sources for such problems.&lt;br /&gt;
&lt;br /&gt;
=== Visualizing the architecture and algorithm ===&lt;br /&gt;
In order to come up with a good hypothesis, you must understand the architecture and algorithm at work.&lt;br /&gt;
This means you have to find out which {{UBIK}} products and modules are involved and how the affected use-case is implemented in the project.&lt;br /&gt;
[[File:IL_Platform_Architecture.png|thumb|The UBIK platform architecture]]&lt;br /&gt;
Nearly all use-cases in {{UBIK}} projects are either related to the mobile client or to interfacing with 3rd party systems. Though the specific implementation can be very different from others, the general flow of information throughout {{UBIK}} modules will almost always be similar. If there is a problem, it has to occur in one of the respective steps, caused by one of the listed dependencies.&lt;br /&gt;
&lt;br /&gt;
==== Mobile client ====&lt;br /&gt;
# The mobile client requests data from the Content web service, using&lt;br /&gt;
#* Hardware (network, client hardware)&lt;br /&gt;
#* Profile settings&lt;br /&gt;
#* Credentials&lt;br /&gt;
# The web service establishes a connection to the UBIK Environment, using&lt;br /&gt;
#* The network &lt;br /&gt;
#* The web service configuration&lt;br /&gt;
#* The database&lt;br /&gt;
#* Injected {{UBIK}} Plugins&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
# The web service tries to perform the requested action based on &lt;br /&gt;
#* Hardware (network, server hardware)&lt;br /&gt;
#* The data model&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
#* The View configuration&lt;br /&gt;
#* Content data&lt;br /&gt;
# The client receives the result and tries to display it depending on&lt;br /&gt;
#* Hardware (network, server &amp;amp; client hardware)&lt;br /&gt;
#* The XAML customizing&lt;br /&gt;
#* The ACM meta definitions&lt;br /&gt;
#* Content data&lt;br /&gt;
&lt;br /&gt;
==== Interfacing ====&lt;br /&gt;
Similarly, interfaces to other systems like SAP or Comos usually perform the following workflow:&lt;br /&gt;
# Somebody (or something) configures a {{UBIK}} Enterprise Service task using its web service interface or a configuration file.&lt;br /&gt;
# An ES run is triggered, most likely using the Windows Task Scheduler.&lt;br /&gt;
# The ES establishes a connection to the UBIK Environment, using&lt;br /&gt;
#* The network &lt;br /&gt;
#* The web service configuration&lt;br /&gt;
#* The database&lt;br /&gt;
#* Injected {{UBIK}} Plugins&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
# The ES tries to perform the requested action, usually based on &lt;br /&gt;
#* Hardware (network, server hardware)&lt;br /&gt;
#* The data model&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
#* The Proxy configuration&lt;br /&gt;
#* Content data&lt;br /&gt;
#* The external system&lt;br /&gt;
&lt;br /&gt;
In this case, the {{UBIK}} Proxy mechanism is an additional source of complexity; but there's a [[HowTo:Configure_Proxies|separate article]] for that. &lt;br /&gt;
&lt;br /&gt;
=== Types of problems ===&lt;br /&gt;
&lt;br /&gt;
==== Performance issues ====&lt;br /&gt;
Performance issues can be caused by:&lt;br /&gt;
* Hardware problems, e.g., slow network or weak devices&lt;br /&gt;
* Huge loads of data&lt;br /&gt;
* Inefficient algorithms (with poor scalability)&lt;br /&gt;
A combination of the above is no rarity.&lt;br /&gt;
&lt;br /&gt;
Sometimes, weak hardware is something we cannot change easily. In many cases, we can optimize our algorithm to make it perform well even on weak hardware. In other cases, we can restructure the problem or the data in a way that makes it easier to process. &lt;br /&gt;
Before we can solve the problem though, we have to find the cause. For now, this means finding the bottle neck. Is the internet connection too slow, do we work with too large amounts of data, is our interface algorithm taking too long, or do we launch too many web requests?&lt;br /&gt;
&lt;br /&gt;
==== Crashes ====&lt;br /&gt;
Crashes often are caused by bugs in the software. In some cases customizing could be able to crash the app, too. &lt;br /&gt;
In case of a bug in {{UBIK}, once you have identified the faulty module and pinned down the reproduction, please notify the development department by creating a support ticket.&lt;br /&gt;
Until the bug is fixed, you might want to find a workaround to avoid the crash.&lt;br /&gt;
&lt;br /&gt;
If the customizing is at fault, the most likely source of a crash is an unhandled exception. E.g., a null-reference exception: the program tries to access a property or function of an object that actually is null. &lt;br /&gt;
&lt;br /&gt;
==== Missing or erroneous data ====&lt;br /&gt;
Data that doesn't look as we expected it can make our customizing (both on the server and on the client) misbehave. The simplest example is a value being NULL when we assume it isn't, which usually leads to a NullReferenceException (and potentially, even a crash) in C#. But there are many other potential problems, for example a value being outside of an expected range or a value being technically acceptable, but semantically wrong. E.g., for some reason we could have a document &amp;quot;chair.jpg&amp;quot;, that is a picture of a table, because the import confused a mapping. &lt;br /&gt;
&lt;br /&gt;
Missing or erroneous data can be caused by:&lt;br /&gt;
* The data having been imported erroneously from an external system&lt;br /&gt;
* Data was input wrong manually&lt;br /&gt;
* A misconfiguration transforming the data or making the data unavailable on the client (or other presenting module)&lt;br /&gt;
** User rights&lt;br /&gt;
** Faulty filters&lt;br /&gt;
** Incomplete ACM/View customizing&lt;br /&gt;
* A bug in the UI customizing, so the data is just hidden or presented wrong&lt;br /&gt;
&lt;br /&gt;
==== Other misbehavior ====&lt;br /&gt;
The app or interface just doesn't behave as expected. The technical concept is sound, the input data looks fine, but the result is wrong. &lt;br /&gt;
In this case it's a good approach to get a complete list of prerequisites and check one thing after another, separately. Surprisingly often, it's something like a typo in the settings.&lt;br /&gt;
&lt;br /&gt;
If you've been looking for ages and still can't find the error, you probably need some distance from the problem. Make a pause, sleep, do something else. Then, try to get an overview and a plan before you get back to debugging. Even the most hopeless problems usually look different after a good night's sleep.&lt;br /&gt;
&lt;br /&gt;
Finally, if you can't find a good hypothesis - that's not a problem. Try to inspect what's actually happening instead, and the hypotheses will follow.&lt;br /&gt;
&lt;br /&gt;
=== Modules and problem sources ===&lt;br /&gt;
&lt;br /&gt;
Different types of problems are not the only categories we can think in. {{UBIK}} is a complex ecosystem with multiple products and many modules, and it's using other products and frameworks to do its job. Hence, the problem can be caused by different sources. It even can be caused in one place and, as a consequence, surface in another. Here's a list of potential problem causes (a combination of multiple points is possible):&lt;br /&gt;
&lt;br /&gt;
* Infrastructure&lt;br /&gt;
** (Network) hardware problem&lt;br /&gt;
** Network security restriction&lt;br /&gt;
** User rights restriction&lt;br /&gt;
* Web Service, Studio or Enterprise Service&lt;br /&gt;
** A manual step was forgotten (rebuilding the custom code, releasing the ACM meta definitions, restarting the web service, ...)&lt;br /&gt;
** Erroneous data (unexpected values provoke the problem)&lt;br /&gt;
** Wrong configuration (a configuration file or an object is misconfigured, potentially including ACM and Proxy/IF configuration)&lt;br /&gt;
** Plugin code (a standard or customer plugin has a bug)&lt;br /&gt;
** Custom code (custom code of meta classes or the custom code library has a bug)&lt;br /&gt;
* Client App &lt;br /&gt;
** Erroneous data (unexpected values provoke the problem)&lt;br /&gt;
** Wrong configuration (the profile or a configuration object coming from the server is misconfigured)&lt;br /&gt;
** UI customizing (some XAML contains an error)&lt;br /&gt;
** Core implementation (the app itself has a bug)&lt;br /&gt;
&lt;br /&gt;
= Fix: Performance Problems =&lt;br /&gt;
&lt;br /&gt;
If you're in the technical design stage, you've already found out the reason for the performance issues. In case of a hardware or infrastructure bottle neck, you can either try to get better circumstances - or adapt to them, optimizing your solution.&lt;br /&gt;
&lt;br /&gt;
Often, the bottle neck is the network connection or the mobile application. However, optimization is also required if the infrastructure is fine but {{UBIK}} takes too long to process the use-case.&lt;br /&gt;
&lt;br /&gt;
In both scenarios, we want to apply the following measures:&lt;br /&gt;
* Leverage strengths instead of weak points&lt;br /&gt;
* Perform as few processing steps as possible&lt;br /&gt;
* Partition the problem into several smaller problems&lt;br /&gt;
&lt;br /&gt;
=== Leverage strengths ===&lt;br /&gt;
&lt;br /&gt;
Usually, the server is strong and fast, the mobile device not so much, and the network is a performance graveyard.&lt;br /&gt;
If you want to waste as much performance and time as possible, then you try to maximize the amount of network interactions and shift all the workload to the client application.&lt;br /&gt;
Vice-versa, leveraging the strengths in {{UBIK}} means to shift all the calculation and preparation to the server and deliver the results in a most compact way to the client in one request-response cycle.&lt;br /&gt;
Often, this means you have to create a new data model on the server to reflect what you want to show on the client, and to use programmatic customizing to prepare it.&lt;br /&gt;
Even if you have all the data already on the server side, it often pays off to restructure it, just for the client, so it can use basic features to just show the data.&lt;br /&gt;
So, the rule of thumb is: The less client customizing you need to do, the better.&lt;br /&gt;
&lt;br /&gt;
=== Minimize processing steps ===&lt;br /&gt;
&lt;br /&gt;
If an algorithm scales badly, even a super computer can be too slow to perform well. &lt;br /&gt;
&lt;br /&gt;
The idea of [https://en.wikipedia.org/wiki/Time_complexity time complexity] in computer science is:&lt;br /&gt;
* Every step in a program consumes a certain amount of processing time. If we have N steps, and one step takes x seconds, we have x * N seconds in total.&lt;br /&gt;
* Most programs have loops or recursions (often even loops inside of loops).&lt;br /&gt;
* This can lead to the situation where the number of steps N is not a fixed number but a (complicated) function of your input data n: N = f(n).&lt;br /&gt;
* E.g., if you have two loops inside of each other, for each of which you iterate over all n inputs, then N = n * n, because we're doing n iterations in the outer loop and for every one of those, we do n iterations in the inner loop.&lt;br /&gt;
* In this case, we can say the time complexity of our program is O(n²). &lt;br /&gt;
&lt;br /&gt;
The simple consequence of this is that we should avoid situations where we have a lot of combinations.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a way to solve this: caching. Caching means remembering things you already did so you don´t have to do them again. &lt;br /&gt;
&lt;br /&gt;
Our goal is to find things we do repeatedly - and then extract them and do them only once in the beginning, and later reuse the result.&lt;br /&gt;
In the simplest case, this means you have to create a variable you can use to store the reusable result.&lt;br /&gt;
In more complex cases, you can use a data storage structure so you can collect and retrieve your data efficiently. &lt;br /&gt;
Quite often, you can use a hash map or Dictionary, but depending on what you need, other structures can be better of course.&lt;br /&gt;
&lt;br /&gt;
=== Partition the problem ===&lt;br /&gt;
&lt;br /&gt;
As an engineer, one wants to provide the best solution for a user. Often, this means as few clicks and navigation steps as possible, and all the required information on one page.&lt;br /&gt;
However, this can be very expensive, because we have to aggregate so much data in one place.&lt;br /&gt;
Also, there might be an even more user-friendly approach, because sometimes, too much at once isn't the best solution. &lt;br /&gt;
&lt;br /&gt;
I'm going to make up a very abstract and stupid example:&lt;br /&gt;
Consider the requirement that a user wants to choose a pair of shoes to wear, with a showcase video for every shoe. Let's imagine the user has a huge amount of shoes, like, thousands.&lt;br /&gt;
Showing them all at once might be computationally expensive, and also it would be a bit overwhelming.&lt;br /&gt;
Instead, maybe we can group the shoes in the (overlapping) categories indoor/outdoor and elegant/functional, and color. &lt;br /&gt;
The user has to perform a few additional navigation steps, but on the other hand, they have to make that choice anyway.&lt;br /&gt;
We even help them selecting a pair of shoes by leading them through the right choices.&lt;br /&gt;
As a nice side-effect, the result consists of much fewer shoes, so it's computationally cheaper to load all the videos.&lt;br /&gt;
Optimally, the parameters for the filtering can be inferred even without the user inputting them explicitly, e.g., by looking at the weather and the user's calendar (sunny weather, hiking trip: probably not the rain boots).&lt;br /&gt;
&lt;br /&gt;
Anyway, in some cases the use-case can be rearranged so the amount of data and information presented to the user at one point in time is smaller.&lt;br /&gt;
&lt;br /&gt;
= Fix: Crashes =&lt;br /&gt;
&lt;br /&gt;
As explained in the hypothesizing section, crashes usually happen because of an unhandled exception being thrown by some module.&lt;br /&gt;
&lt;br /&gt;
The basic approach to solve crashes consists of two measures:&lt;br /&gt;
* Avoid the crash by checking for the problematic circumstance provoking the crash (e.g., check for a null-reference)&lt;br /&gt;
* Find out where the problem originally comes from. For this reason, also log all relevant details when the above check prevents a crash.&lt;br /&gt;
The second point implies that the situation leading to the crash is not the real problem.&lt;br /&gt;
The real problem is either that the situation shouldn't occur in the first place or that the program cannot deal with that case; maybe it's a buggy dependency or erroneous input data.&lt;br /&gt;
&lt;br /&gt;
= Fix: Faulty data = &lt;br /&gt;
&lt;br /&gt;
For faulty data, we have to find out where it comes from and solve the problem at its source (or as close to it as possible).&lt;br /&gt;
Nearly always, it's much harder to deal with erroneous data when processing it than where it originates.&lt;br /&gt;
The reason for that being, it is much harder to infer the correct data from erroneous data than to prevent the data being wrong.&lt;br /&gt;
Consider the following fictional example: In a project, we import a lot of text, but somehow during the import, all line breaks get lost.&lt;br /&gt;
It's hard to find out afterwards where the line breaks should be. In that case, it's better to fix the corrupting element and repeat the import.&lt;br /&gt;
&lt;br /&gt;
The rule of thumb here is: Don't try to cope with the faulty data when processing or showing it. Instead, fix the problem at the source and repair the data by reimporting.&lt;br /&gt;
&lt;br /&gt;
= Fix: Other misbehavior =&lt;br /&gt;
&lt;br /&gt;
Maybe the issue is a simple typo or wrong setting and you can fix the problem with a simple measure. Since you're reading this, the solution might not be so simple and we have to approach it conceptually.&lt;br /&gt;
&lt;br /&gt;
This depends a lot on the specific problem, but most misbehavior arises because the implementation currently in place is not well-designed architecturally.&lt;br /&gt;
&lt;br /&gt;
Interestingly enough, this in turn often is because of a bad functional design.&lt;br /&gt;
This means, if one hasn't defined the behavior nicely, one can also not define a nice technical solution for it.&lt;br /&gt;
The rule of thumb here is to re-evaluate what the target behavior should be (in contrast to what the designated behavior is currently believed to be).&lt;br /&gt;
&lt;br /&gt;
If the designated behavior is clear but the implementation still misbehaves, the implementation probably has to be redesigned for clarity and architectural correctness.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/End}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Best Practices (internal)|Debug a Customizing]]&lt;br /&gt;
[[Category:FAQ|Debugging UBIK]]&lt;br /&gt;
[[Category:How-To|Debugging UBIK]]&lt;br /&gt;
[[Category:Resources (internal)|Debug a Customizing]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=HowTo:Debugging_UBIK&amp;diff=25882</id>
		<title>HowTo:Debugging UBIK</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=HowTo:Debugging_UBIK&amp;diff=25882"/>
				<updated>2024-02-15T13:52:20Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the most complex challenges when working on any software project is to debug unintended behavior. In {{UBIK}}, there is an inherent structure to every project, which we can exploit for debugging. Let's find out, how. &lt;br /&gt;
&lt;br /&gt;
== Quick-fix check list ==&lt;br /&gt;
&lt;br /&gt;
Many issues can be resolved by going through the following check list.&lt;br /&gt;
&lt;br /&gt;
# Check settings and configurations for typos, missing entries and other errors&lt;br /&gt;
# Restart {{UBIK}} Studio and reconnect to your DB to avoid caching issues&lt;br /&gt;
# Check whether all plugins were loaded correctly&lt;br /&gt;
# In case the custom code was changed, or {{UBIK}} was upgraded to a new version:&lt;br /&gt;
## Compile and publish the customizing (F6)&lt;br /&gt;
## Restart the Enterprise Service&lt;br /&gt;
## Restart all Web Services&lt;br /&gt;
# In case the data model for the client was changed:&lt;br /&gt;
## Rebuild and publish the ACM meta definitions using the ACM manager&lt;br /&gt;
## Restart all web services&lt;br /&gt;
# Restart the {{UBIK}} client application to make sure new meta definitions and content are received&lt;br /&gt;
&lt;br /&gt;
== A general policy for debugging ==&lt;br /&gt;
&lt;br /&gt;
Debugging can be approached methodically. Here's a basic plan for debugging software.&lt;br /&gt;
&lt;br /&gt;
# '''Reproduction''': Get all available, relevant information about the bug and confirm the problem in a test setup&lt;br /&gt;
# '''Inspection''': Inspect the actual behavior to understand the cause&lt;br /&gt;
# '''Fix''': Design and implement a solution&lt;br /&gt;
# '''Retest''': Test the fix&lt;br /&gt;
&lt;br /&gt;
== Debugging a {{UBIK}} project ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/Begin}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reproduction =&lt;br /&gt;
&lt;br /&gt;
==== Full Test System ====&lt;br /&gt;
To reproduce the problem with {{UBIK}}, you require a test setup. This usually means a local copy of the database the problem occurred with and an installation of the {{UBIK}} products relevant for the problem. It is important to use the same binaries, plugins and versions as in the system where the problem occurred.&lt;br /&gt;
Then, we can try to provoke the reported issue in the test setup. This might require getting more information about the issue.&lt;br /&gt;
&lt;br /&gt;
==== Isolation Testing ====&lt;br /&gt;
If a full test setup is not feasible, isolating a (presumably) faulty part and testing it individually often makes sense.&lt;br /&gt;
&lt;br /&gt;
In {{UBIK}} Studio, there are two tools for this:&lt;br /&gt;
* Who-Bert Debugging Tool&lt;br /&gt;
* View Test Tool&lt;br /&gt;
&lt;br /&gt;
Both can be used to test the behavior of {{UBIK}} objects (and custom code) on the server side. &lt;br /&gt;
With Who-Bert code and manually created test data, you can additionally set up a &amp;quot;mock&amp;quot; or &amp;quot;fake&amp;quot; situation, to test the behavior under very specific circumstances.&lt;br /&gt;
The View Test Tool simulates how the web service assembles data for the client, ignoring the ACM meta definitions (context, scopes etc.).&lt;br /&gt;
&lt;br /&gt;
= Inspection =&lt;br /&gt;
&lt;br /&gt;
Once you have a test setup and are able to reproduce the issue, you can inspect what's happening in detail to find out why the problem occurs.&lt;br /&gt;
This can be done either by debugging with Visual Studio, or by producing diagnostic output in the form of log entries, {{UBIK}} objects and property values, or UI customizing.&lt;br /&gt;
&lt;br /&gt;
=== Inspect the mobile client ===&lt;br /&gt;
* Use the [[Developer_Mode]] to inspect the currently visible view models and their values.&lt;br /&gt;
* Inspect the log files of the mobile client, including the web service client log.&lt;br /&gt;
&lt;br /&gt;
=== Inspect the web services or the Enterprise Service ===&lt;br /&gt;
* Inspect the log files of the web service or Enterprise Service.&lt;br /&gt;
* Modify your plugin or programmatic customizing to output log messages describing the state of your program at critical points.&lt;br /&gt;
* Modify your plugin or programmatic customizing to write diagnostic {{UBIK}} objects describing the state of your program at critical points.&lt;br /&gt;
* Use a Who-Bert script to test a specific setup and output log messages to the console.&lt;br /&gt;
&lt;br /&gt;
= Hypothesizing =&lt;br /&gt;
In order to narrow down the cause of the problem, we can try to formulate an idea of what could have gone wrong. Optimally, we actually go and look for a proof, to see it happen in action, but it's always good to know potential error sources. In general, there are several common types of problems, and from another perspective, a set of common sources for such problems.&lt;br /&gt;
&lt;br /&gt;
=== Visualizing the architecture and algorithm ===&lt;br /&gt;
In order to come up with a good hypothesis, you must understand the architecture and algorithm at work.&lt;br /&gt;
This means you have to find out which {{UBIK}} products and modules are involved and how the affected use-case is implemented in the project.&lt;br /&gt;
[[File:IL_Platform_Architecture.png|thumb|The UBIK platform architecture]]&lt;br /&gt;
Nearly all use-cases in {{UBIK}} projects are either related to the mobile client or to interfacing with 3rd party systems. Though the specific implementation can be very different from others, the general flow of information throughout {{UBIK}} modules will almost always be similar. If there is a problem, it has to occur in one of the respective steps, caused by one of the listed dependencies.&lt;br /&gt;
&lt;br /&gt;
==== Mobile client ====&lt;br /&gt;
# The mobile client requests data from the Content web service, using&lt;br /&gt;
#* Hardware (network, client hardware)&lt;br /&gt;
#* Profile settings&lt;br /&gt;
#* Credentials&lt;br /&gt;
# The web service establishes a connection to the UBIK Environment, using&lt;br /&gt;
#* The network &lt;br /&gt;
#* The web service configuration&lt;br /&gt;
#* The database&lt;br /&gt;
#* Injected {{UBIK}} Plugins&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
# The web service tries to perform the requested action based on &lt;br /&gt;
#* Hardware (network, server hardware)&lt;br /&gt;
#* The data model&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
#* The View configuration&lt;br /&gt;
#* Content data&lt;br /&gt;
# The client receives the result and tries to display it depending on&lt;br /&gt;
#* Hardware (network, server &amp;amp; client hardware)&lt;br /&gt;
#* The XAML customizing&lt;br /&gt;
#* The ACM meta definitions&lt;br /&gt;
#* Content data&lt;br /&gt;
&lt;br /&gt;
==== Interfacing ====&lt;br /&gt;
Similarly, interfaces to other systems like SAP or Comos usually perform the following workflow:&lt;br /&gt;
# Somebody (or something) configures a {{UBIK}} Enterprise Service task using its web service interface or a configuration file.&lt;br /&gt;
# An ES run is triggered, most likely using the Windows Task Scheduler.&lt;br /&gt;
# The ES establishes a connection to the UBIK Environment, using&lt;br /&gt;
#* The network &lt;br /&gt;
#* The web service configuration&lt;br /&gt;
#* The database&lt;br /&gt;
#* Injected {{UBIK}} Plugins&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
# The ES tries to perform the requested action, usually based on &lt;br /&gt;
#* Hardware (network, server hardware)&lt;br /&gt;
#* The data model&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
#* The Proxy configuration&lt;br /&gt;
#* Content data&lt;br /&gt;
#* The external system&lt;br /&gt;
&lt;br /&gt;
In this case, the {{UBIK}} Proxy mechanism is an additional source of complexity; but there's a [[HowTo:Configure_Proxies|separate article]] for that. &lt;br /&gt;
&lt;br /&gt;
=== Types of problems ===&lt;br /&gt;
&lt;br /&gt;
==== Performance issues ====&lt;br /&gt;
Performance issues can be caused by:&lt;br /&gt;
* Hardware problems, e.g., slow network or weak devices&lt;br /&gt;
* Huge loads of data&lt;br /&gt;
* Inefficient algorithms (with poor scalability)&lt;br /&gt;
A combination of the above is no rarity.&lt;br /&gt;
&lt;br /&gt;
Sometimes, weak hardware is something we cannot change easily. In many cases, we can optimize our algorithm to make it perform well even on weak hardware. In other cases, we can restructure the problem or the data in a way that makes it easier to process. &lt;br /&gt;
Before we can solve the problem though, we have to find the cause. For now, this means finding the bottle neck. Is the internet connection too slow, do we work with too large amounts of data, is our interface algorithm taking too long, or do we launch too many web requests?&lt;br /&gt;
&lt;br /&gt;
==== Crashes ====&lt;br /&gt;
Crashes often are caused by bugs in the software. In some cases customizing could be able to crash the app, too. &lt;br /&gt;
In case of a bug in {{UBIK}, once you have identified the faulty module and pinned down the reproduction, please notify the development department by creating a support ticket.&lt;br /&gt;
Until the bug is fixed, you might want to find a workaround to avoid the crash.&lt;br /&gt;
&lt;br /&gt;
If the customizing is at fault, the most likely source of a crash is an unhandled exception. E.g., a null-reference exception: the program tries to access a property or function of an object that actually is null. &lt;br /&gt;
&lt;br /&gt;
==== Missing or erroneous data ====&lt;br /&gt;
Data that doesn't look as we expected it can make our customizing (both on the server and on the client) misbehave. The simplest example is a value being NULL when we assume it isn't, which usually leads to a NullReferenceException (and potentially, even a crash) in C#. But there are many other potential problems, for example a value being outside of an expected range or a value being technically acceptable, but semantically wrong. E.g., for some reason we could have a document &amp;quot;chair.jpg&amp;quot;, that is a picture of a table, because the import confused a mapping. &lt;br /&gt;
&lt;br /&gt;
Missing or erroneous data can be caused by:&lt;br /&gt;
* The data having been imported erroneously from an external system&lt;br /&gt;
* Data was input wrong manually&lt;br /&gt;
* A misconfiguration transforming the data or making the data unavailable on the client (or other presenting module)&lt;br /&gt;
** User rights&lt;br /&gt;
** Faulty filters&lt;br /&gt;
** Incomplete ACM/View customizing&lt;br /&gt;
* A bug in the UI customizing, so the data is just hidden or presented wrong&lt;br /&gt;
&lt;br /&gt;
==== Other misbehavior ====&lt;br /&gt;
The app or interface just doesn't behave as expected. The technical concept is sound, the input data looks fine, but the result is wrong. &lt;br /&gt;
In this case it's a good approach to get a complete list of prerequisites and check one thing after another, separately. Surprisingly often, it's something like a typo in the settings.&lt;br /&gt;
&lt;br /&gt;
If you've been looking for ages and still can't find the error, you probably need some distance from the problem. Make a pause, sleep, do something else. Then, try to get an overview and a plan before you get back to debugging. Even the most hopeless problems usually look different after a good night's sleep.&lt;br /&gt;
&lt;br /&gt;
Finally, if you can't find a good hypothesis - that's not a problem. Try to inspect what's actually happening instead, and the hypotheses will follow.&lt;br /&gt;
&lt;br /&gt;
=== Modules and problem sources ===&lt;br /&gt;
&lt;br /&gt;
Different types of problems are not the only categories we can think in. {{UBIK}} is a complex ecosystem with multiple products and many modules, and it's using other products and frameworks to do its job. Hence, the problem can be caused by different sources. It even can be caused in one place and, as a consequence, surface in another. Here's a list of potential problem causes (a combination of multiple points is possible):&lt;br /&gt;
&lt;br /&gt;
* Infrastructure&lt;br /&gt;
** (Network) hardware problem&lt;br /&gt;
** Network security restriction&lt;br /&gt;
** User rights restriction&lt;br /&gt;
* Web Service, Studio or Enterprise Service&lt;br /&gt;
** A manual step was forgotten (rebuilding the custom code, releasing the ACM meta definitions, restarting the web service, ...)&lt;br /&gt;
** Erroneous data (unexpected values provoke the problem)&lt;br /&gt;
** Wrong configuration (a configuration file or an object is misconfigured, potentially including ACM and Proxy/IF configuration)&lt;br /&gt;
** Plugin code (a standard or customer plugin has a bug)&lt;br /&gt;
** Custom code (custom code of meta classes or the custom code library has a bug)&lt;br /&gt;
* Client App &lt;br /&gt;
** Erroneous data (unexpected values provoke the problem)&lt;br /&gt;
** Wrong configuration (the profile or a configuration object coming from the server is misconfigured)&lt;br /&gt;
** UI customizing (some XAML contains an error)&lt;br /&gt;
** Core implementation (the app itself has a bug)&lt;br /&gt;
&lt;br /&gt;
= Fix: Performance Problems =&lt;br /&gt;
&lt;br /&gt;
If you're in the technical design stage, you've already found out the reason for the performance issues. In case of a hardware or infrastructure bottle neck, you can either try to get better circumstances - or adapt to them, optimizing your solution.&lt;br /&gt;
&lt;br /&gt;
Often, the bottle neck is the network connection or the mobile application. However, optimization is also required if the infrastructure is fine but {{UBIK}} takes too long to process the use-case.&lt;br /&gt;
&lt;br /&gt;
In both scenarios, we want to apply the following measures:&lt;br /&gt;
* Leverage strengths instead of weak points&lt;br /&gt;
* Perform as few processing steps as possible&lt;br /&gt;
* Partition the problem into several smaller problems&lt;br /&gt;
&lt;br /&gt;
=== Leverage strengths ===&lt;br /&gt;
&lt;br /&gt;
Usually, the server is strong and fast, the mobile device not so much, and the network is a performance graveyard.&lt;br /&gt;
If you want to waste as much performance and time as possible, then you try to maximize the amount of network interactions and shift all the workload to the client application.&lt;br /&gt;
Vice-versa, leveraging the strengths in {{UBIK}} means to shift all the calculation and preparation to the server and deliver the results in a most compact way to the client in one request-response cycle.&lt;br /&gt;
Often, this means you have to create a new data model on the server to reflect what you want to show on the client, and to use programmatic customizing to prepare it.&lt;br /&gt;
Even if you have all the data already on the server side, it often pays off to restructure it, just for the client, so it can use basic features to just show the data.&lt;br /&gt;
So, the rule of thumb is: The less client customizing you need to do, the better.&lt;br /&gt;
&lt;br /&gt;
=== Minimize processing steps ===&lt;br /&gt;
&lt;br /&gt;
If an algorithm scales badly, even a super computer can be too slow to perform well. &lt;br /&gt;
&lt;br /&gt;
The idea of [https://en.wikipedia.org/wiki/Time_complexity time complexity] in computer science is:&lt;br /&gt;
* Every step in a program consumes a certain amount of processing time. If we have N steps, and one step takes x seconds, we have x * N seconds in total.&lt;br /&gt;
* Most programs have loops or recursions (often even loops inside of loops).&lt;br /&gt;
* This can lead to the situation where the number of steps N is not a fixed number but a (complicated) function of your input data n: N = f(n).&lt;br /&gt;
* E.g., if you have two loops inside of each other, for each of which you iterate over all n inputs, then N = n * n, because we're doing n iterations in the outer loop and for every one of those, we do n iterations in the inner loop.&lt;br /&gt;
* In this case, we can say the time complexity of our program is O(n²). &lt;br /&gt;
&lt;br /&gt;
The simple consequence of this is that we should avoid situations where we have a lot of combinations.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a way to solve this: caching. Caching means remembering things you already did so you don´t have to do them again. &lt;br /&gt;
&lt;br /&gt;
Our goal is to find things we do repeatedly - and then extract them and do them only once in the beginning, and later reuse the result.&lt;br /&gt;
In the simplest case, this means you have to create a variable you can use to store the reusable result.&lt;br /&gt;
In more complex cases, you can use a data storage structure so you can collect and retrieve your data efficiently. &lt;br /&gt;
Quite often, you can use a hash map or Dictionary, but depending on what you need, other structures can be better of course.&lt;br /&gt;
&lt;br /&gt;
=== Partition the problem ===&lt;br /&gt;
&lt;br /&gt;
As an engineer, one wants to provide the best solution for a user. Often, this means as few clicks and navigation steps as possible, and all the required information on one page.&lt;br /&gt;
However, this can be very expensive, because we have to aggregate so much data in one place.&lt;br /&gt;
Also, there might be an even more user-friendly approach, because sometimes, too much at once isn't the best solution. &lt;br /&gt;
&lt;br /&gt;
I'm going to make up a very abstract and stupid example:&lt;br /&gt;
Consider the requirement that a user wants to choose a pair of shoes to wear, with a showcase video for every shoe. Let's imagine the user has a huge amount of shoes, like, thousands.&lt;br /&gt;
Showing them all at once might be computationally expensive, and also it would be a bit overwhelming.&lt;br /&gt;
Instead, maybe we can group the shoes in the (overlapping) categories indoor/outdoor and elegant/functional, and color. &lt;br /&gt;
The user has to perform a few additional navigation steps, but on the other hand, they have to make that choice anyway.&lt;br /&gt;
We even help them selecting a pair of shoes by leading them through the right choices.&lt;br /&gt;
As a nice side-effect, the result consists of much fewer shoes so it's computationally cheaper to load all the videos.&lt;br /&gt;
Optimally, the parameters for the filtering can be inferred even without the user inputting them explicitely, e.g., by looking at the wheather and the user's calendar (sunny wheather, hiking trip: probably not the rain boots).&lt;br /&gt;
&lt;br /&gt;
Anyway, in some cases the use-case can be rearranged so the amount of data and information presented to the user at one point in time is smaller.&lt;br /&gt;
&lt;br /&gt;
= Fix: Crashes =&lt;br /&gt;
&lt;br /&gt;
As explained in the hypothesizing section, crashes usually happen because of an unhandled exception being thrown by some module.&lt;br /&gt;
&lt;br /&gt;
The basic approach to solve crashes consists of two measures:&lt;br /&gt;
* Avoid the crash by checking for the problematic circumstance provoking the crash (e.g., check for a null-reference)&lt;br /&gt;
* Find out where the problem originally comes from. For this reason, also log all relevant details when the above check prevents a crash.&lt;br /&gt;
The second point implies that the situation leading to the crash is not the real problem.&lt;br /&gt;
The real problem is either that the situation shouldn't occur in the first place or that the program cannot deal with that case; maybe it's a buggy dependency or erroneous input data.&lt;br /&gt;
&lt;br /&gt;
= Fix: Faulty data = &lt;br /&gt;
&lt;br /&gt;
For faulty data, we have to find out where it comes from and solve the problem at its source (or as close to it as possible).&lt;br /&gt;
Nearly always, it's much harder to deal with erroneous data when processing it than where it originates.&lt;br /&gt;
The reason for that being, it is much harder to infer the correct data from erroneous data than to prevent the data being wrong.&lt;br /&gt;
Consider the following fictional example: In a project, we import a lot of text, but somehow during the import, all line breaks get lost.&lt;br /&gt;
It's hard to find out afterwards where the line breaks should be. In that case, it's better to fix the corrupting element and repeat the import.&lt;br /&gt;
&lt;br /&gt;
The rule of thumb here is: Don't try to cope with the faulty data when processing or showing it. Instead, fix the problem at the source and repair the data by reimporting.&lt;br /&gt;
&lt;br /&gt;
= Fix: Other misbehavior =&lt;br /&gt;
&lt;br /&gt;
Maybe the issue is a simple typo or wrong setting and you can fix the problem with a simple measure. Since you're reading this, the solution might not be so simple and we have to approach it conceptually.&lt;br /&gt;
&lt;br /&gt;
This depends a lot on the specific problem, but most misbehavior arises because the implementation currently in place is not well-designed architecturally.&lt;br /&gt;
&lt;br /&gt;
Interestingly enough, this in turn often is because of a bad functional design.&lt;br /&gt;
This means, if one hasn't defined the behavior nicely, one can also not define a nice technical solution for it.&lt;br /&gt;
The rule of thumb here is to re-evaluate what the target behavior should be (in contrast to what the designated behavior is currently believed to be).&lt;br /&gt;
&lt;br /&gt;
If the designated behavior is clear but the implementation still misbehaves, the implementation probably has to be redesigned for clarity and architectural correctness.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/End}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Best Practices (internal)|Debug a Customizing]]&lt;br /&gt;
[[Category:FAQ|Debugging UBIK]]&lt;br /&gt;
[[Category:How-To|Debugging UBIK]]&lt;br /&gt;
[[Category:Resources (internal)|Debug a Customizing]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=HowTo:Debugging_UBIK&amp;diff=25881</id>
		<title>HowTo:Debugging UBIK</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=HowTo:Debugging_UBIK&amp;diff=25881"/>
				<updated>2024-02-15T13:46:01Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the most complex challenges when working on any software project is to debug unintended behavior. In {{UBIK}}, there is an inherent structure to every project, which we can exploit for debugging. Let's find out, how. &lt;br /&gt;
&lt;br /&gt;
== Quick-fix check list ==&lt;br /&gt;
&lt;br /&gt;
Many issues can be resolved by going through the following check list.&lt;br /&gt;
&lt;br /&gt;
# Check settings and configurations for typos, missing entries and other errors&lt;br /&gt;
# Restart {{UBIK}} Studio and reconnect to your DB to avoid caching issues&lt;br /&gt;
# Check whether all plugins were loaded correctly&lt;br /&gt;
# In case the custom code was changed, or {{UBIK}} was upgraded to a new version:&lt;br /&gt;
## Compile and publish the customizing (F6)&lt;br /&gt;
## Restart the Enterprise Service&lt;br /&gt;
## Restart all Web Services&lt;br /&gt;
# In case the data model for the client was changed:&lt;br /&gt;
## Rebuild and publish the ACM meta definitions using the ACM manager&lt;br /&gt;
## Restart all web services&lt;br /&gt;
# Restart the {{UBIK}} client application to make sure new meta definitions and content are received&lt;br /&gt;
&lt;br /&gt;
== A general policy for debugging ==&lt;br /&gt;
&lt;br /&gt;
Debugging can be approached methodically. Here's a basic plan for debugging software.&lt;br /&gt;
&lt;br /&gt;
# '''Reproduction''': Get all available, relevant information about the bug and confirm the problem in a test setup&lt;br /&gt;
# '''Inspection''': Inspect the actual behavior to understand the cause&lt;br /&gt;
# '''Fix''': Design and implement a solution&lt;br /&gt;
# '''Retest''': Test the fix&lt;br /&gt;
&lt;br /&gt;
== Debugging a {{UBIK}} project ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/Begin}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Reproduction =&lt;br /&gt;
&lt;br /&gt;
==== Full Test System ====&lt;br /&gt;
To reproduce the problem with {{UBIK}}, you require a test setup. This usually means a local copy of the database the problem occurred with and an installation of the {{UBIK}} products relevant for the problem. It is important to use the same binaries, plugins and versions as in the system where the problem occurred.&lt;br /&gt;
Then, we can try to provoke the reported issue in the test setup. This might require getting more information about the issue.&lt;br /&gt;
&lt;br /&gt;
==== Isolation Testing ====&lt;br /&gt;
If a full test setup is not feasible, isolating a (presumably) faulty part and testing it individually often makes sense.&lt;br /&gt;
&lt;br /&gt;
In {{UBIK}} Studio, there are two tools for this:&lt;br /&gt;
* Who-Bert Debugging Tool&lt;br /&gt;
* View Test Tool&lt;br /&gt;
&lt;br /&gt;
Both can be used to test the behavior of {{UBIK}} objects (and custom code) on the server side. &lt;br /&gt;
With Who-Bert code and manually created test data, you can additionally set up a &amp;quot;mock&amp;quot; or &amp;quot;fake&amp;quot; situation, to test the behavior under very specific circumstances.&lt;br /&gt;
The View Test Tool simulates how the web service assembles data for the client, ignoring the ACM meta definitions (context, scopes etc.).&lt;br /&gt;
&lt;br /&gt;
= Inspection =&lt;br /&gt;
&lt;br /&gt;
Once you have a test setup and are able to reproduce the issue, you can inspect what's happening in detail to find out why the problem occurs.&lt;br /&gt;
This can be done either by debugging with Visual Studio, or by producing diagnostic output in the form of log entries, {{UBIK}} objects and property values, or UI customizing.&lt;br /&gt;
&lt;br /&gt;
=== Inspect the mobile client ===&lt;br /&gt;
* Use the [[Developer_Mode]] to inspect the currently visible view models and their values.&lt;br /&gt;
* Inspect the log files of the mobile client, including the web service client log.&lt;br /&gt;
&lt;br /&gt;
=== Inspect the web services or the Enterprise Service ===&lt;br /&gt;
* Inspect the log files of the web service or Enterprise Service.&lt;br /&gt;
* Modify your plugin or programmatic customizing to output log messages describing the state of your program at critical points.&lt;br /&gt;
* Modify your plugin or programmatic customizing to write diagnostic {{UBIK}} objects describing the state of your program at critical points.&lt;br /&gt;
* Use a Who-Bert script to test a specific setup and output log messages to the console.&lt;br /&gt;
&lt;br /&gt;
= Hypothesizing =&lt;br /&gt;
In order to narrow down the cause of the problem, we can try to formulate an idea what could have gone wrong. Optimally, we actually go and look for a proof, to see it happen in action, but it's always good to know potential error sources. In general, there are several common types of problems, and from another perspective, a set of common sources for such problems.&lt;br /&gt;
&lt;br /&gt;
=== Visualizing the architecture and algorithm ===&lt;br /&gt;
In order to come up with a good hypothesis, you must understand the architecture and algorithm at work.&lt;br /&gt;
This means you have to find out which {{UBIK}} products and modules are involved and how the affected use-case is implemented in the project.&lt;br /&gt;
[[File:IL_Platform_Architecture.png|thumb|The UBIK platform architecture]]&lt;br /&gt;
Nearly all use-cases in {{UBIK}} projects are either related to the mobile client or to interfacing with 3rd party systems. Though the specific implementation can be very different from others, the general flow of information throughout {{UBIK}} modules will almost always be similar. If there is a problem, it has to occur in one of the respective steps, caused by one of the listed dependencies.&lt;br /&gt;
&lt;br /&gt;
==== Mobile client ====&lt;br /&gt;
# The mobile client requests data from the Content web service, using&lt;br /&gt;
#* Hardware (network, client hardware)&lt;br /&gt;
#* Profile settings&lt;br /&gt;
#* Credentials&lt;br /&gt;
# The web service establishes a connection to the UBIK Environment, using&lt;br /&gt;
#* The network &lt;br /&gt;
#* The web service configuration&lt;br /&gt;
#* The database&lt;br /&gt;
#* Injected {{UBIK}} Plugins&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
# The web service tries to perform the requested action based on &lt;br /&gt;
#* Hardware (network, server hardware)&lt;br /&gt;
#* The data model&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
#* The View configuration&lt;br /&gt;
#* Content data&lt;br /&gt;
# The client receives the result and tries to display it depending on&lt;br /&gt;
#* Hardware (network, server &amp;amp; client hardware)&lt;br /&gt;
#* The XAML customizing&lt;br /&gt;
#* The ACM meta definitions&lt;br /&gt;
#* Content data&lt;br /&gt;
&lt;br /&gt;
==== Interfacing ====&lt;br /&gt;
Similarly, interfaces to other systems like SAP or Comos usually perform the following workflow:&lt;br /&gt;
# Somebody (or something) configures a {{UBIK}} Enterprise Service task using its web service interface or a configuration file.&lt;br /&gt;
# An ES run is triggered, most likely using the Windows Task Scheduler.&lt;br /&gt;
# The ES establishes a connection to the UBIK Environment, using&lt;br /&gt;
#* The network &lt;br /&gt;
#* The web service configuration&lt;br /&gt;
#* The database&lt;br /&gt;
#* Injected {{UBIK}} Plugins&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
# The ES tries to perform the requested action, usually based on &lt;br /&gt;
#* Hardware (network, server hardware)&lt;br /&gt;
#* The data model&lt;br /&gt;
#* The programmatic customizing&lt;br /&gt;
#* The Proxy configuration&lt;br /&gt;
#* Content data&lt;br /&gt;
#* The external system&lt;br /&gt;
&lt;br /&gt;
In this case, the {{UBIK}} Proxy mechanism is an additional source of complexity; but there's a [[HowTo:Configure_Proxies|separate article]] for that. &lt;br /&gt;
&lt;br /&gt;
=== Types of problems ===&lt;br /&gt;
&lt;br /&gt;
==== Performance issues ====&lt;br /&gt;
Performance issues can be caused by:&lt;br /&gt;
* Hardware problems, e.g., slow network or weak devices&lt;br /&gt;
* Huge loads of data&lt;br /&gt;
* Inefficient algorithms (with poor scalability)&lt;br /&gt;
A combination of the above is no rarity.&lt;br /&gt;
&lt;br /&gt;
Sometimes, weak hardware is something we cannot change easily. In many cases, we can optimize our algorithm to make it perform well even on weak hardware. In other cases, we can restructure the problem or the data in a way that makes it easier to process. &lt;br /&gt;
Before we can solve the problem though, we have to find the cause. For now, this means finding the bottle neck. Is the internet connection too slow, do we work with too large amounts of data, is our interface algorithm taking too long, or do we launch too many web requests?&lt;br /&gt;
&lt;br /&gt;
==== Crashes ====&lt;br /&gt;
Crashes often are caused by bugs in the software. In some cases customizing could be able to crash the app, too. &lt;br /&gt;
In case of a bug in {{UBIK}, once you have identified the faulty module and pinned down the reproduction, please notify the development department by creating a support ticket.&lt;br /&gt;
Until the bug is fixed, you might want to find a workaround to avoid the crash.&lt;br /&gt;
&lt;br /&gt;
If the customizing is at fault, the most likely source of a crash is an unhandled exception. E.g., a null-reference exception: the program tries to access a property or function of an object that actually is null. &lt;br /&gt;
&lt;br /&gt;
==== Missing or erroneous data ====&lt;br /&gt;
Data that doesn't look as we expected it can make our customizing (both on the server and on the client) misbehave. The simplest example is a value being NULL when we assume it isn't, which usually leads to a NullReferenceException (and potentially, even a crash) in C#. But there are many other potential problems, for example a value being outside of an expected range or a value being technically acceptable, but semantically wrong. E.g., for some reason we could have a document &amp;quot;chair.jpg&amp;quot;, that is a picture of a table, because the import confused a mapping. &lt;br /&gt;
&lt;br /&gt;
Missing or erroneous data can be caused by:&lt;br /&gt;
* The data having been imported erroneously from an external system&lt;br /&gt;
* Data was input wrong manually&lt;br /&gt;
* A misconfiguration transforming the data or making the data unavailable on the client (or other presenting module)&lt;br /&gt;
** User rights&lt;br /&gt;
** Faulty filters&lt;br /&gt;
** Incomplete ACM/View customizing&lt;br /&gt;
* A bug in the UI customizing, so the data is just hidden or presented wrong&lt;br /&gt;
&lt;br /&gt;
==== Other misbehavior ====&lt;br /&gt;
The app or interface just doesn't behave as expected. The technical concept is sound, the input data looks fine, but the result is wrong. &lt;br /&gt;
In this case it's a good approach to get a complete list of prerequisites and check one thing after another, separately. Surprisingly often, it's something like a typo in the settings.&lt;br /&gt;
&lt;br /&gt;
If you've been looking for ages and still can't find the error, you probably need some distance from the problem. Make a pause, sleep, do something else. Then, try to get an overview and a plan before you get back to debugging. Even the most hopeless problems usually look different after a good night's sleep.&lt;br /&gt;
&lt;br /&gt;
Finally, if you can't find a good hypothesis - that's not a problem. Try to inspect what's actually happening instead, and the hypotheses will follow.&lt;br /&gt;
&lt;br /&gt;
=== Modules and problem sources ===&lt;br /&gt;
&lt;br /&gt;
Different types of problems are not the only categories we can think in. {{UBIK}} is a complex ecosystem with multiple products and many modules, and it's using other products and frameworks to do its job. Hence, the problem can be caused by different sources. It even can be caused in one place and, as a consequence, surface in another. Here's a list of potential problem causes (a combination of multiple points is possible):&lt;br /&gt;
&lt;br /&gt;
* Infrastructure&lt;br /&gt;
** (Network) hardware problem&lt;br /&gt;
** Network security restriction&lt;br /&gt;
** User rights restriction&lt;br /&gt;
* Web Service, Studio or Enterprise Service&lt;br /&gt;
** A manual step was forgotten (rebuilding the custom code, releasing the ACM meta definitions, restarting the web service, ...)&lt;br /&gt;
** Erroneous data (unexpected values provoke the problem)&lt;br /&gt;
** Wrong configuration (a configuration file or an object is misconfigured, potentially including ACM and Proxy/IF configuration)&lt;br /&gt;
** Plugin code (a standard or customer plugin has a bug)&lt;br /&gt;
** Custom code (custom code of meta classes or the custom code library has a bug)&lt;br /&gt;
* Client App &lt;br /&gt;
** Erroneous data (unexpected values provoke the problem)&lt;br /&gt;
** Wrong configuration (the profile or a configuration object coming from the server is misconfigured)&lt;br /&gt;
** UI customizing (some XAML contains an error)&lt;br /&gt;
** Core implementation (the app itself has a bug)&lt;br /&gt;
&lt;br /&gt;
= Fix: Performance Problems =&lt;br /&gt;
&lt;br /&gt;
If you're in the technical design stage, you've already found out the reason for the performance issues. In case of a hardware or infrastructure bottle neck, you can either try to get better circumstances - or adapt to them, optimizing your solution.&lt;br /&gt;
&lt;br /&gt;
Often, the bottle neck is the network connection or the mobile application. However, optimization is also required if the infrastructure is fine but {{UBIK}} takes too long to process the use-case.&lt;br /&gt;
&lt;br /&gt;
In both scenarios, we want to apply the following measures:&lt;br /&gt;
* Leverage strengths instead of weak points&lt;br /&gt;
* Perform as few processing steps as possible&lt;br /&gt;
* Partition the problem into several smaller problems&lt;br /&gt;
&lt;br /&gt;
=== Leverage strengths ===&lt;br /&gt;
&lt;br /&gt;
Usually, the server is strong and fast, the mobile device not so much, and the network is a performance graveyard.&lt;br /&gt;
If you want to waste as much performance and time as possible, then you try to maximize the amount of network interactions and shift all the workload to the client application.&lt;br /&gt;
Vice-versa, leveraging the strengths in {{UBIK}} means to shift all the calculation and preparation to the server and deliver the results in a most compact way to the client in one request-response cycle.&lt;br /&gt;
Often, this means you have to create a new data model on the server to reflect what you want to show on the client, and to use programmatic customizing to prepare it.&lt;br /&gt;
Even if you have all the data already on the server side, it often pays off to restructure it, just for the client, so it can use basic features to just show the data.&lt;br /&gt;
So, the rule of thumb is: The less client customizing you need to do, the better.&lt;br /&gt;
&lt;br /&gt;
=== Minimize processing steps ===&lt;br /&gt;
&lt;br /&gt;
If an algorithm scales badly, even a super computer can be too slow to perform well. &lt;br /&gt;
&lt;br /&gt;
The idea of [https://en.wikipedia.org/wiki/Time_complexity time complexity] in computer science is:&lt;br /&gt;
* Every step in a program consumes a certain amount of processing time. If we have N steps, and one step takes x seconds, we have x * N seconds in total.&lt;br /&gt;
* Most programs have loops or recursions (often even loops inside of loops).&lt;br /&gt;
* This can lead to the situation where the number of steps N is not a fixed number but a (complicated) function of your input data n: N = f(n).&lt;br /&gt;
* E.g., if you have two loops inside of each other, for each of which you iterate over all n inputs, then N = n * n, because we're doing n iterations in the outer loop and for every one of those, we do n iterations in the inner loop.&lt;br /&gt;
* In this case, we can say the time complexity of our program is O(n²). &lt;br /&gt;
&lt;br /&gt;
The simple consequence of this is that we should avoid situations where we have a lot of combinations.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a way to solve this: caching. Caching means remembering things you already did so you don´t have to do them again. &lt;br /&gt;
&lt;br /&gt;
Our goal is to find things we do repeatedly - and then extract them and do them only once in the beginning, and later reuse the result.&lt;br /&gt;
In the simplest case, this means you have to create a variable you can use to store the reusable result.&lt;br /&gt;
In more complex cases, you can use a data storage structure so you can collect and retrieve your data efficiently. &lt;br /&gt;
Quite often, you can use a hash map or Dictionary, but depending on what you need, other structures can be better of course.&lt;br /&gt;
&lt;br /&gt;
=== Partition the problem ===&lt;br /&gt;
&lt;br /&gt;
As an engineer, one wants to provide the best solution for a user. Often, this means as few clicks and navigation steps as possible, and all the required information on one page.&lt;br /&gt;
However, this can be very expensive, because we have to aggregate so much data in one place.&lt;br /&gt;
Also, there might be an even more user-friendly approach, because sometimes, too much at once isn't the best solution. &lt;br /&gt;
&lt;br /&gt;
I'm going to make up a very abstract and stupid example:&lt;br /&gt;
Consider the requirement that a user wants to choose a pair of shoes to wear, with a showcase video for every shoe. Let's imagine the user has a huge amount of shoes, like, thousands.&lt;br /&gt;
Showing them all at once might be computationally expensive, and also it would be a bit overwhelming.&lt;br /&gt;
Instead, maybe we can group the shoes in the (overlapping) categories indoor/outdoor and elegant/functional, and color. &lt;br /&gt;
The user has to perform a few additional navigation steps, but on the other hand, they have to make that choice anyway.&lt;br /&gt;
We even help them selecting a pair of shoes by leading them through the right choices.&lt;br /&gt;
As a nice side-effect, the result consists of much fewer shoes so it's computationally cheaper to load all the videos.&lt;br /&gt;
Optimally, the parameters for the filtering can be inferred even without the user inputting them explicitely, e.g., by looking at the wheather and the user's calendar (sunny wheather, hiking trip: probably not the rain boots).&lt;br /&gt;
&lt;br /&gt;
Anyway, in some cases the use-case can be rearranged so the amount of data and information presented to the user at one point in time is smaller.&lt;br /&gt;
&lt;br /&gt;
= Fix: Crashes =&lt;br /&gt;
&lt;br /&gt;
As explained in the hypothesizing section, crashes usually happen because of an unhandled exception being thrown by some module.&lt;br /&gt;
&lt;br /&gt;
The basic approach to solve crashes consists of two measures:&lt;br /&gt;
* Avoid the crash by checking for the problematic circumstance provoking the crash (e.g., check for a null-reference)&lt;br /&gt;
* Find out where the problem originally comes from. For this reason, also log all relevant details when the above check prevents a crash.&lt;br /&gt;
The second point implies that the situation leading to the crash is not the real problem.&lt;br /&gt;
The real problem is either that the situation shouldn't occur in the first place or that the program cannot deal with that case; maybe it's a buggy dependency or erroneous input data.&lt;br /&gt;
&lt;br /&gt;
= Fix: Faulty data = &lt;br /&gt;
&lt;br /&gt;
For faulty data, we have to find out where it comes from and solve the problem at its source (or as close to it as possible).&lt;br /&gt;
Nearly always, it's much harder to deal with erroneous data when processing it than where it originates.&lt;br /&gt;
The reason for that being, it is much harder to infer the correct data from erroneous data than to prevent the data being wrong.&lt;br /&gt;
Consider the following fictional example: In a project, we import a lot of text, but somehow during the import, all line breaks get lost.&lt;br /&gt;
It's hard to find out afterwards where the line breaks should be. In that case, it's better to fix the corrupting element and repeat the import.&lt;br /&gt;
&lt;br /&gt;
The rule of thumb here is: Don't try to cope with the faulty data when processing or showing it. Instead, fix the problem at the source and repair the data by reimporting.&lt;br /&gt;
&lt;br /&gt;
= Fix: Other misbehavior =&lt;br /&gt;
&lt;br /&gt;
Maybe the issue is a simple typo or wrong setting and you can fix the problem with a simple measure. Since you're reading this, the solution might not be so simple and we have to approach it conceptually.&lt;br /&gt;
&lt;br /&gt;
This depends a lot on the specific problem, but most misbehavior arises because the implementation currently in place is not well-designed architecturally.&lt;br /&gt;
&lt;br /&gt;
Interestingly enough, this in turn often is because of a bad functional design.&lt;br /&gt;
This means, if one hasn't defined the behavior nicely, one can also not define a nice technical solution for it.&lt;br /&gt;
The rule of thumb here is to re-evaluate what the target behavior should be (in contrast to what the designated behavior is currently believed to be).&lt;br /&gt;
&lt;br /&gt;
If the designated behavior is clear but the implementation still misbehaves, the implementation probably has to be redesigned for clarity and architectural correctness.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/End}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Best Practices (internal)|Debug a Customizing]]&lt;br /&gt;
[[Category:FAQ|Debugging UBIK]]&lt;br /&gt;
[[Category:How-To|Debugging UBIK]]&lt;br /&gt;
[[Category:Resources (internal)|Debug a Customizing]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=List_of_Versions&amp;diff=25784</id>
		<title>List of Versions</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=List_of_Versions&amp;diff=25784"/>
				<updated>2024-01-24T12:03:54Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:IC_MainPage-20.png]] '''Future versions'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2024-??-??| [[Version_4.7_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2024-??-??| {{Version/WinX|4.7}}}}&lt;br /&gt;
{{Item/Version|2024-??-??| [[Version_4.6_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2024-??-??| {{Version/WinX|4.6}}}}&lt;br /&gt;
{{Item/Version|2024-01-??| [[Version_4.6.0 (Server)]]}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Check mark}} '''Released versions'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2023-11-06| [[Version_4.5.0 (Server)]]}}&lt;br /&gt;
{{Item/Version|2023-11-02| [[Version_4.5_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2023-11-02| {{Version/WinX|4.5}}}}&lt;br /&gt;
{{Item/Version|2023-09-12| [[Version_4.4.0 (Server)]]}}&lt;br /&gt;
{{Item/Version|2023-09-04| [[Version_4.4_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2023-09-04| {{Version/WinX|4.4}}}}&lt;br /&gt;
{{Item/Version|2022-04-11| [[Version_4.3.0_(Server)]]}}&lt;br /&gt;
{{Item/Version|2023-04-04| [[Version_4.3_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2023-04-04| {{Version/WinX|4.3}}}}&lt;br /&gt;
{{Item/Version|2023-01.31| [[Version_3.7.1]]}}&lt;br /&gt;
{{Item/Version|2023-01-30| [[Version_4.2_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2023-01-30| {{Version/WinX|4.2}}}}&lt;br /&gt;
{{Item/Version|2022-11-17| [Beta] {{Version/Server|4.0}}}}&lt;br /&gt;
{{Item/Version|2022-08-22| [[Version_4.1_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2022-08-09| [[Version_3.7.0_Server]]}}&lt;br /&gt;
{{Item/Version|2022-07-22| {{Version/WinX|4.1}}}}&lt;br /&gt;
{{Item/Version|2022-05-31| [[Version_3.6.2_Server]]}}&lt;br /&gt;
{{Item/Version|2022-04-26| {{Version/WinX|4.0}}}}&lt;br /&gt;
{{Item/Version|2022-03-23| [[Version_3.6.1_Server]]}}&lt;br /&gt;
{{Item/Version|2022-01-19| {{Version/Server|3.6}}}}&lt;br /&gt;
{{Item/Version|2021-12-22| [[Version_1.3_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2021-05-31| [[Version_1.2_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2021-04-23| {{Version/WinX|3.8}}}}&lt;br /&gt;
{{Item/Version|2020-11-12| [[Version_1.1_Xamarin]]}}&lt;br /&gt;
{{Item/Version|2020-04-09| {{Version/Server|3.5.0}}}}&lt;br /&gt;
{{Item/Version|2020-03-27| {{Version/WinX|3.7}}}}&lt;br /&gt;
{{Item/Version|2020-02-13| {{Version/WinX|3.6}}}}&lt;br /&gt;
{{Item/Version|2019-11-04| [[Version_1.0_(Xamarin.iOS)]]}}&lt;br /&gt;
{{Item/Version|2019-10-21| [[Version_1.0_(Xamarin.Android)]]}}&lt;br /&gt;
{{Item/Version|2019-04-30| {{Version/WinX|3.5}}}}&lt;br /&gt;
{{Item/Version|2018-12-10| {{Version/Server|2.6.3}}}}&lt;br /&gt;
{{Item/Version|2018-12-10| {{Version/WinX|3.4}}}}&lt;br /&gt;
{{Item/Version|2018-10-24| {{Version/WinX|3.3}}}}&lt;br /&gt;
{{Item/Version|2018-07-06| {{Version/WinX|3.2.0}}}}&lt;br /&gt;
{{Item/Version|2018-04-19| {{Version/Android|3.0.0}}}}&lt;br /&gt;
{{Item/Version|2018-04-04| {{Version/Server|2.6.2}}}}&lt;br /&gt;
{{Item/Version|2018-03-08| {{Version/Android|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2018-01-23| {{Version/WinX|3.1.0}}}}&lt;br /&gt;
{{Item/Version|2017-10-13| {{Version/WinX|3.0.0}}}}&lt;br /&gt;
{{Item/Version|2017-06-14| {{Version/Server|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2017-02-13| {{Version/WinX|2.6.0}}}}&lt;br /&gt;
{{Item/Version|2016-07-21| {{Version/Android|2.5.5}}}}&lt;br /&gt;
{{Item/Version|2016-07-21| {{Version/Android|2.5.4}}}}&lt;br /&gt;
{{Item/Version|2016-04-01| {{Version/Android|2.5.3}}}}&lt;br /&gt;
{{Item/Version|2016-05-13| {{Version/WinX|2.5.2}}}}&lt;br /&gt;
{{Item/Version|2016-01-27| {{Version/Android|2.5.2}}}}&lt;br /&gt;
{{Item/Version|2015-11-25| {{Version/Web|2.5.0}}}}&lt;br /&gt;
{{Item/Version|2015-11-20| {{Version/Android|2.5.1}}}}&lt;br /&gt;
{{Item/Version|2015-11-17| {{Version/Android|2.5.0}}}}&lt;br /&gt;
{{Item/Version|2015-10-15| {{Version/Server|2.5.0}}}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Item/Version|2015-07-09| {{Version/Android|2.4.6}}}}&lt;br /&gt;
{{Item/Version|2015-06-24| {{Version/Android|2.4.5}}}}&lt;br /&gt;
{{Item/Version|2015-05-21| {{Version/Server|2.4.3}}}}&lt;br /&gt;
{{Item/Version|2015-04-23| {{Version/Android|2.4.4}}}}&lt;br /&gt;
{{Item/Version|2015-04-08| {{Version/Android|2.4.3}}}}&lt;br /&gt;
{{Item/Version|2015-03-20| {{Version/Android|2.4.2}}&amp;lt;br /&amp;gt;{{Version/Server|2.4.2}}}}&lt;br /&gt;
{{Item/Version|2015-03-12| {{Version/Server|2.4.1}}}}&lt;br /&gt;
{{Item/Version|2015-03-04| {{Version/Android|2.4.1}}}}&lt;br /&gt;
{{Item/Version|2014-12-05| {{Version/Android|2.4.1}}&amp;lt;br /&amp;gt;{{Version/Server|2.4.0}}}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-20.png]] '''Available Release Candidates'''&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
{{Item/Version|2020-01-01| {{Version/Android|3.1.0}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
[[File:IC_MainPage-21.png]] '''[[:Category:Release notes|Previous versions]]'''&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=25783</id>
		<title>Version 4.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(WinX)&amp;diff=25783"/>
				<updated>2024-01-24T11:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: Created page with &amp;quot;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of version 3.6 and higher!}}  == Availability == {{key press|Android: Store}}{{key pres...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.? on 2024-??-?? {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=25782</id>
		<title>Version 4.7 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.7_(Xamarin)&amp;diff=25782"/>
				<updated>2024-01-24T11:05:59Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: Created page with &amp;quot;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of version 3.6 and higher!}}  == Availability == {{key press|Android: Store}}{{key pres...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.7.? on 2024-??-?? {{key press|App Center}}  ===&lt;br /&gt;
* Added a new [https://wiki.augmensys.com/index.php?title=XAML_Tips UpdateArbitraryObjectCommand] that allows to update an arbitrary object based on a set of provided parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&lt;br /&gt;
* The periodic execution of background pushes is not guaranteed on iOS.&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;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25775</id>
		<title>Version 4.6 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25775"/>
				<updated>2024-01-23T10:41:15Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.6.? on 2024-01-?? {{key press|App Center}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.? on 2024-01-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue that caused a crash when reverting geo data in certain situations.&lt;br /&gt;
* Fixed the paste menu item not activating when copying multiple objects.&lt;br /&gt;
* (iOS) Fixed an issue where the app crashes after you move a PDF annotation.&lt;br /&gt;
* (iOS) Fixed an issue where the app crashed after deleting multiple objects on the server.&lt;br /&gt;
* (Android) Fixed an issue where the app froze after opening a list of target objects when direct editing is enabled.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
&lt;br /&gt;
=== 4.6.6 on 2023-12-15 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the app might save an object unnecessarily (especially in offline/manual mode), leading to potential performance issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.5 on 2023-12-07 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where ink/shape annotations created with an older client are displayed completely transparent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.4 on 2023-12-06 {{key press|App Center}} ===&lt;br /&gt;
* Updated some text localization.&lt;br /&gt;
* Display property data context names for content items in the [[Developer_Mode|developer mode]].&lt;br /&gt;
* Updated the Czech and the Polish localization.&lt;br /&gt;
* UBIK can now apply preconfigured initial zoom levels when displaying PDF documents.&lt;br /&gt;
* Updated the Portuguese and the Spanish localization.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.3 on 2023-12-01 {{key press|App Center}} ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content.&lt;br /&gt;
* Fixed an Issue that prevented manually committing changes in manual mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Fixed an issue where highlight colors in the pdfViewer did not work properly.&lt;br /&gt;
* It's now possible to customize the visibility of the appbar [[Xamarin_XAML#Feature_related|Menu Button]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not in the view port of the PDF Viewer after performing a text search.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&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;
&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 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25769</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25769"/>
				<updated>2024-01-17T10:02:11Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* UpdateArbitraryObjectCommand {{Version/WinXSince|4.7}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Attachable behaviors ===&lt;br /&gt;
It's quite often that you need to attach behaviors to certain XAML elements. For example, on a Grid, you want to attach a behavior which executes a command upon a Tapped event, or you want to execute a command when a certain property on a UBIK object changes.&lt;br /&gt;
&lt;br /&gt;
Notice that in the following examples, &amp;quot;Interactivity&amp;quot; and &amp;quot;Core&amp;quot; are both namespaces and you have to make sure that they are defined at the root of your XAMLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:Core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Event Triggered ====&lt;br /&gt;
With an EventTriggerBehavior, you can react on changes/events of UI Elements:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&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 NavigateToChildrenCommand}&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;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Triggered ====&lt;br /&gt;
If you want to react on changes of the underlying data (ViewModel), you can use DataTriggerBehavior instead. The following example, when used in the ''UBIKSplashArea'' template, automatically navigates to the root objects once the login process is finished and the user was successfully authenticated:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
       &amp;lt;Core:DataTriggerBehavior Binding=&amp;quot;{Binding IsLoggedIn}&amp;quot; Value=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding NavigateToRootPageCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/Core:DataTriggerBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;/Interactivity:Interaction.Behaviors&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content creation === &lt;br /&gt;
{{Version/WinXSince|3.5.5}}&lt;br /&gt;
To directly create an object on a child of the current object, you can define a Button as follows. The method &amp;quot;Item.IsTypeCreationAllowed&amp;quot;  used in the expression gets the uid of the type that should be created below a child, if a child does not allow the creation of that type underneath it, the child will be hidden in the selection dialog. To actually create the object, the &amp;quot;CreateChildItemCommand&amp;quot; needs to be passed a KeyValueList with two parameters: The Parent-key is the UID or the ContentViewModel of the child underneath the object should be created, the Type-key is the type of object which should be created--this should match the uid passed to the &amp;quot;Item.IsTypeCreationAllowed&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    xmlns:cv=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;6D733909-1742-4110-8619-237849BFE453&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;{Binding Tag, ElementName=CreateButton}&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, the following optional parameters can be added as well.&lt;br /&gt;
* CreateOnly (optional, defaults to false): When set to true, the client will not automatically navigate to the created content, rather automatically save and commit it. If set to true, this overrides the following parameters;&lt;br /&gt;
* AutoNavigate (optional, defaults to true): When set to false, the client will not automatically navigate to the created content;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and the database, and then committed to the server.&lt;br /&gt;
&lt;br /&gt;
=== Creating multiple documents ===&lt;br /&gt;
To upload multiple documents at once, the CreateChildItemsCommand can be used. The list of supported command parameters are similar to those of the CreateChildItemCommand (single item). Except that anything other than AutoNavigate=false and AutoCommit=true do not make sense in multi-creation scenario. Therefore, those parameters are fixed and any received from XAML will be ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;--&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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&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;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable FilloutCriteria  ===&lt;br /&gt;
{{Version/WinXSince|3.5}}&lt;br /&gt;
To enable/disable the automatic filtering of a query based on the ParentObject, there is the possibility to specify EnableFillOutCriteria--if it is not set, it defaults to false. Additionaly &amp;quot;SkipDialog&amp;quot; can be set to true, to not display a dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid x:Name=&amp;quot;selectionGrid&amp;quot; Tag=&amp;quot;{Binding MetaUID}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Interactivity:Interaction.Behaviors&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 ElementName=ChildAreaGrid, Path=DataContext.AddTemplatableDataCommand}&amp;quot; &amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
                        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;{Binding Tag,ElementName=selectionGrid}&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;EnableFillOutCriteria&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;SkipDialog&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
               &amp;lt;/Core:InvokeCommandAction&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;/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;
&lt;br /&gt;
&lt;br /&gt;
=== Hotspotting ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
The hotspotting command is used for hotspotting as well as for annotating, to configure the button for hotspotting, the commandparameter &amp;quot;Mode&amp;quot; should be set to &amp;quot;HotSpotting&amp;quot;, for annotating the &amp;quot;Mode&amp;quot; should be &amp;quot;Annotate&amp;quot;. The parameter commit is optional, if set to true, the changes get automatically persisted when leaving the editing mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AppBarToggleButton&lt;br /&gt;
		IsChecked=&amp;quot;{Binding EditingAnnotation, Mode=TwoWay}&amp;quot;&lt;br /&gt;
		IsEnabled=&amp;quot;{Binding IsAnnotatable}&amp;quot;&lt;br /&gt;
		Command=&amp;quot;{Binding HotSpottingCommand}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Mode&amp;quot; Value=&amp;quot;Annotate&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Commit&amp;quot; Value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
		&amp;lt;/AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarToggleButton&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;
=== Remember scroll positions of list views ===&lt;br /&gt;
&lt;br /&gt;
==== Version 3.7 &amp;amp; later {{Version/WinXSince|3.7}} ====&lt;br /&gt;
Starting from this version,&lt;br /&gt;
* The precision of scroll position remembering is improved(by pixel offsets instead of by items);&lt;br /&gt;
* It also works for other scrollable lists (instead of just for content object lists).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To enable this feature, you should make sure the following.&lt;br /&gt;
* The SelectionBoundListView is used instead of the standard ListView. Its {{UBIK}} namespace is &amp;lt;code&amp;gt;UBIK.WinX.Controls&amp;lt;/code&amp;gt;;&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;RememberScrollPosition&amp;lt;/code&amp;gt; property is not set to &amp;quot;false&amp;quot;; (It's &amp;quot;true&amp;quot; by default.)&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;x:Name&amp;lt;/code&amp;gt; property value is unique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Version 3.6  {{Version/WinXSince|3.6}} ====&lt;br /&gt;
The UBIK-Client does include a function to remember the position in a list (ListView) when navigating away from it. This function is only available when the list (ListView) has a unique name as a property (x:Name). When browsing back to the previously visited list UBIK scrolls back to the last position. The function does not save scroll positions over different sessions.&lt;br /&gt;
Implementing the function to remember the scroll position in a ListView one has to consider that the list elements (Children) could depend on a other UI-element. If the list elements do depend on a other UI-elemente, this element has to be created above the ListView in the XAML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot; xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;uc:SelectionBoundListView x:Name=&amp;quot;ChildListView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
           &amp;lt;behaviors:FirstVisibleItemPersistenceBehavior FirstVisibleItems=&amp;quot;{Binding ScrollItems}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
     &amp;lt;/uc:SelectionBoundListView&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&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;
=== MultiBinding {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Very often we want to display some UI elements (e.g. a Grid) depending on whether multiple criteria are met. It's much easier to achieve this by using a MultiBindingBehavior like the following.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&lt;br /&gt;
    xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:MultiBindingBehavior Converter=&amp;quot;{StaticResource VisLogicAndConverter}&amp;quot; PropertyName=&amp;quot;Visibility&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding MassEditViewModel, Converter={StaticResource NullToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding Documents.Items.Count, Converter={StaticResource ItemCountToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:MultiBindingBehavior&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The behavior makes sure the container Grid is set to Visibile only if the mass editing mode is not turned on (MassEditViewModel is null) and the context object has child document(s) (Documents.Items.Count is greater than 0. You can combine any number of binding results (MultiBindingItem) using the VisLogicAndConverter (the name should be self explanatory).&lt;br /&gt;
&lt;br /&gt;
=== InvokeOnItemsCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Available on all ListViewModels, this command allows executing a specified command on a collection of list items. It can be used in combination with features such as [[Mass_Edit_(UBIK_WinX)|mass editing]] and [[XAML_Changes_in_UBIK_WinX_3.5#After_3.5|expression based collection filtering]]. Examples for both combinations are provided below.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The command specified through the &amp;quot;Command&amp;quot; parameter is executed on list items and, therefore, must be available in the list item contexts (view models). If in doubt, the [[Developer_Mode|developer mode]] can be used to inspect if a command is available in a certain context.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Parameter &amp;quot;Command&amp;quot; and &amp;quot;SelectedItemsOnly&amp;quot; are specific to the InvokeOnItemsCommand. What other parameters to define or whether to define them at all depends on the type of command to be executed on the items.}}&lt;br /&gt;
&lt;br /&gt;
==== Invoke on selected items ====&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
This example demonstrates how you can use the mass editing feature to select certain objects from the child list and then execute the SetPropertyValueCommand for those selected.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* You should insert the following code snippet into the default UBIKChildArea template;&lt;br /&gt;
* If the parameter &amp;quot;SelectedItemsOnly&amp;quot; is missed or set to &amp;quot;False&amp;quot;, the command will be executed on all child items;&lt;br /&gt;
* To enable selection, click on the &amp;quot;Mass Edit&amp;quot; button below the property list.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;Button&lt;br /&gt;
    xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
==== Invoke on filtered results ====&lt;br /&gt;
&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
* First, you need to setup a filtered list&lt;br /&gt;
**UWP: Setup a ListCollectionView in the Resources section of a UI element (e.g. Grid). This list is only available/visible within that UI element (the Grid in this case).&lt;br /&gt;
**Xamarin: Setup a String with a filtering expression &amp;amp; a SfDataSourceExt in the ResourceDictionary of the ContentView. For the Expression property of the SfDataSourceExt refer to the created expression String.&lt;br /&gt;
&lt;br /&gt;
* The ItemsSource uses Children.Items. Use the [[Developer_Mode|developer mode]] if necessary to find out if this is available where you intend to define the list;&lt;br /&gt;
* The example expression filters for any items that don't contain the text &amp;quot;EXAMPLE&amp;quot; in their Title texts. You can filter differently by altering the expression.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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 xmlns:CV=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;CV:ListCollectionView&lt;br /&gt;
                x:Key=&amp;quot;Filtered&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;!Item.Title.Contains(&amp;amp;quot;EXAMPLE&amp;amp;quot;)&amp;quot;&lt;br /&gt;
                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;
    &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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView&lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    ...&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.Title.Contains(&amp;amp;quot;EXAMLPLE&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt x:Key=&amp;quot;Filtered&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&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;/ContentView&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
With the filtered list configured, you can then insert the following code snippet to execute the SetPropertyValueCommand for the filtered result items.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* The &amp;quot;Filtered&amp;quot; refers to the ListCollectionView (UWP) or SfDataSourceExt  (Xamarin) configured above.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;AllApps&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50&amp;quot;&lt;br /&gt;
      Style=&amp;quot;{ThemeResource UBIKActionAppBarButton}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&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;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&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;
{{Attention|The binding &amp;lt;code&amp;gt;ListViewModel.InvokeOnItemsCommand&amp;lt;/code&amp;gt; should be updated to &amp;lt;code&amp;gt;BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; starting from version 4.3.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Support for old styled commands ====&lt;br /&gt;
Some old commands might not support KeyValueLists as parameters. In that case, just define the parameter value under the &amp;quot;CommandParameter&amp;quot; key, e.g.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;CommandParameter&amp;quot; Value=&amp;quot;some string value for example&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;.&lt;br /&gt;
This single value is then passed as the command parameter instead of the entire KeyValueList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SetPropertyValueCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
This command existed before but was implemented differently. In the newer version(s), it is improved to provide customizers more control over the things that happen during/after the property value changes.&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* PropertyName: the name of the property to set a new value to;&lt;br /&gt;
* PropertyValue: the value to be set to the above mentioned property;&lt;br /&gt;
* OnlyForUnvalidated (optional, defaults to false): When set to true, the value will only be set if the property is not yet validated;&lt;br /&gt;
* AutoSave (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and database;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be committed to the server.&lt;br /&gt;
&lt;br /&gt;
{{Hint|There's no way to commit changes without saving them locally first. Therefore, the &amp;quot;AutoSave&amp;quot; parameter will be ignored when &amp;quot;AutoCommit&amp;quot; is set to true.}}&lt;br /&gt;
&lt;br /&gt;
Here's an example of the command usage. It tries to set the property called &amp;quot;VALUE&amp;quot; to a double value 50 regardless of its current state and then automatically save and commit the change.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;Edit&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50%&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                      &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                  &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
              &amp;lt;/example:KeyValueParameter&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|It is advised to provide typed values like &amp;lt;nowiki&amp;gt;&amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&amp;lt;/nowiki&amp;gt;. But for simple types, you can try writing them in the text format like &amp;lt;nowiki&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt; and {{UBIK}} will try to find the right type.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DisplayViewCommand ===&lt;br /&gt;
This command can be used to [[Custom_View_(Client)|display cutom views]].&lt;br /&gt;
&lt;br /&gt;
=== TeachInCommand ===&lt;br /&gt;
With the '''TeachInCommand''' you're allowed to set your device's current location (&amp;quot;teach-in&amp;quot;, &amp;quot;TeachIn&amp;quot;) as the value of the context object's [[SYSCLS_GEO|geo property]].&lt;br /&gt;
This command is available in both '''ContentViewModel''' and '''PropertyViewModel'''.&lt;br /&gt;
* ContentViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the context object's [[SYSCLS_GEO|geo property]]. Saves and commits the change;&lt;br /&gt;
* PropertyViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the current property if it's a geo property (not necessarily the [[SYSCLS_GEO|geo property]]). Addtionally supports a boolean command parameter:&lt;br /&gt;
** False (default): The change is not automatically saved. &lt;br /&gt;
** True: The change is saved.&lt;br /&gt;
&amp;lt;br/&amp;gt; {{hint| Make sure you use the correct binding path for your command depending on your current context view model. E.g., if the context view model is already the ContentViewModel then your binding path should simply be TeachInCommand. You can use the [[Developer_Mode|developer mode]] to find out the current view model in a view.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UpdateArbitraryObjectCommand {{Version/WinXSince|4.7}}===&lt;br /&gt;
The &amp;quot;UpdateArbitraryObjectCommand&amp;quot; is responsible for updating an arbitrary object based on a set of provided parameters. The command is accessible in the AppStatusViewModel (as '''ViewModel.AppStatus'''). &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* Uid (Mandatory): UID of the object to be updated;&lt;br /&gt;
* UpdateChildDepth (Optional): Child depth/level to update (defaults to 1);&lt;br /&gt;
* UpdateParentDepth (Optional): Parent depth/level to update (defaults to 0);&lt;br /&gt;
* UpdateIgnoreExpiry (Optional): Ignore update expiry (defaults to false); &lt;br /&gt;
&lt;br /&gt;
{{Hint|Note that if you set the UpdateChildDepth property to &amp;quot;-1&amp;quot; you are also able to update a whole branch with this command.}}&lt;br /&gt;
&lt;br /&gt;
Here is an example of the command usage: &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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&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;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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:uc=&amp;quot;using:clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&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;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&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;/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|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
=== Access to an arbitrary object {{Version/WinXSince|4.6}} {{Version/XamarinSince|4.6}} ===&lt;br /&gt;
With the ObjectByUID feature it is possible to access any local arbitrary object by its UID and, for example, display a value of it.&lt;br /&gt;
It can be accessed from ContentViewModel, AuthenticationViewModel, and RootPageViewModel levels.&lt;br /&gt;
&lt;br /&gt;
To display a string of e.g. a property of an arbitrary object from ContentViewModel, AuthenticationViewModel &amp;amp; RootPageViewModel, the following syntax can be used in related XAMLs:&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;TextBlock Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
For Property Dialogs the CallingViewModel prefix is needed to access an arbitrary object:&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;TextBlock Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&lt;br /&gt;
&lt;br /&gt;
==== UI virtualization ====&lt;br /&gt;
When using the FlipView control in your XAML code, it's better to enable [https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview#ui-virtualization UI virtualization]. The difference in performance gets more obvious as the number of items in the FlipView increases. Here's how to enable it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;FlipView&lt;br /&gt;
    ...&lt;br /&gt;
    VirtualizingStackPanel.VirtualizationMode=&amp;quot;Standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
        &amp;lt;ItemsPanelTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;VirtualizingStackPanel Orientation=&amp;quot;Horizontal&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ItemsPanelTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
&amp;lt;/FlipView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auto saving ====&lt;br /&gt;
Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Changes are lost when leaving the page without flipping the document first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualizingStackPanel.VirtualizationMode offers two possibilities: Standard &amp;amp; Recycling. In case you are interested, here are their [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizationmode?view=netframework-4.7.2 differences].&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25768</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25768"/>
				<updated>2024-01-17T10:01:37Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Attachable behaviors ===&lt;br /&gt;
It's quite often that you need to attach behaviors to certain XAML elements. For example, on a Grid, you want to attach a behavior which executes a command upon a Tapped event, or you want to execute a command when a certain property on a UBIK object changes.&lt;br /&gt;
&lt;br /&gt;
Notice that in the following examples, &amp;quot;Interactivity&amp;quot; and &amp;quot;Core&amp;quot; are both namespaces and you have to make sure that they are defined at the root of your XAMLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:Core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Event Triggered ====&lt;br /&gt;
With an EventTriggerBehavior, you can react on changes/events of UI Elements:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&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 NavigateToChildrenCommand}&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;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Triggered ====&lt;br /&gt;
If you want to react on changes of the underlying data (ViewModel), you can use DataTriggerBehavior instead. The following example, when used in the ''UBIKSplashArea'' template, automatically navigates to the root objects once the login process is finished and the user was successfully authenticated:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
       &amp;lt;Core:DataTriggerBehavior Binding=&amp;quot;{Binding IsLoggedIn}&amp;quot; Value=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding NavigateToRootPageCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/Core:DataTriggerBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;/Interactivity:Interaction.Behaviors&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content creation === &lt;br /&gt;
{{Version/WinXSince|3.5.5}}&lt;br /&gt;
To directly create an object on a child of the current object, you can define a Button as follows. The method &amp;quot;Item.IsTypeCreationAllowed&amp;quot;  used in the expression gets the uid of the type that should be created below a child, if a child does not allow the creation of that type underneath it, the child will be hidden in the selection dialog. To actually create the object, the &amp;quot;CreateChildItemCommand&amp;quot; needs to be passed a KeyValueList with two parameters: The Parent-key is the UID or the ContentViewModel of the child underneath the object should be created, the Type-key is the type of object which should be created--this should match the uid passed to the &amp;quot;Item.IsTypeCreationAllowed&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    xmlns:cv=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;6D733909-1742-4110-8619-237849BFE453&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;{Binding Tag, ElementName=CreateButton}&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, the following optional parameters can be added as well.&lt;br /&gt;
* CreateOnly (optional, defaults to false): When set to true, the client will not automatically navigate to the created content, rather automatically save and commit it. If set to true, this overrides the following parameters;&lt;br /&gt;
* AutoNavigate (optional, defaults to true): When set to false, the client will not automatically navigate to the created content;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and the database, and then committed to the server.&lt;br /&gt;
&lt;br /&gt;
=== Creating multiple documents ===&lt;br /&gt;
To upload multiple documents at once, the CreateChildItemsCommand can be used. The list of supported command parameters are similar to those of the CreateChildItemCommand (single item). Except that anything other than AutoNavigate=false and AutoCommit=true do not make sense in multi-creation scenario. Therefore, those parameters are fixed and any received from XAML will be ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;--&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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&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;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable FilloutCriteria  ===&lt;br /&gt;
{{Version/WinXSince|3.5}}&lt;br /&gt;
To enable/disable the automatic filtering of a query based on the ParentObject, there is the possibility to specify EnableFillOutCriteria--if it is not set, it defaults to false. Additionaly &amp;quot;SkipDialog&amp;quot; can be set to true, to not display a dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid x:Name=&amp;quot;selectionGrid&amp;quot; Tag=&amp;quot;{Binding MetaUID}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Interactivity:Interaction.Behaviors&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 ElementName=ChildAreaGrid, Path=DataContext.AddTemplatableDataCommand}&amp;quot; &amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
                        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;{Binding Tag,ElementName=selectionGrid}&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;EnableFillOutCriteria&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;SkipDialog&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
               &amp;lt;/Core:InvokeCommandAction&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;/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;
&lt;br /&gt;
&lt;br /&gt;
=== Hotspotting ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
The hotspotting command is used for hotspotting as well as for annotating, to configure the button for hotspotting, the commandparameter &amp;quot;Mode&amp;quot; should be set to &amp;quot;HotSpotting&amp;quot;, for annotating the &amp;quot;Mode&amp;quot; should be &amp;quot;Annotate&amp;quot;. The parameter commit is optional, if set to true, the changes get automatically persisted when leaving the editing mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AppBarToggleButton&lt;br /&gt;
		IsChecked=&amp;quot;{Binding EditingAnnotation, Mode=TwoWay}&amp;quot;&lt;br /&gt;
		IsEnabled=&amp;quot;{Binding IsAnnotatable}&amp;quot;&lt;br /&gt;
		Command=&amp;quot;{Binding HotSpottingCommand}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Mode&amp;quot; Value=&amp;quot;Annotate&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Commit&amp;quot; Value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
		&amp;lt;/AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarToggleButton&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;
=== Remember scroll positions of list views ===&lt;br /&gt;
&lt;br /&gt;
==== Version 3.7 &amp;amp; later {{Version/WinXSince|3.7}} ====&lt;br /&gt;
Starting from this version,&lt;br /&gt;
* The precision of scroll position remembering is improved(by pixel offsets instead of by items);&lt;br /&gt;
* It also works for other scrollable lists (instead of just for content object lists).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To enable this feature, you should make sure the following.&lt;br /&gt;
* The SelectionBoundListView is used instead of the standard ListView. Its {{UBIK}} namespace is &amp;lt;code&amp;gt;UBIK.WinX.Controls&amp;lt;/code&amp;gt;;&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;RememberScrollPosition&amp;lt;/code&amp;gt; property is not set to &amp;quot;false&amp;quot;; (It's &amp;quot;true&amp;quot; by default.)&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;x:Name&amp;lt;/code&amp;gt; property value is unique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Version 3.6  {{Version/WinXSince|3.6}} ====&lt;br /&gt;
The UBIK-Client does include a function to remember the position in a list (ListView) when navigating away from it. This function is only available when the list (ListView) has a unique name as a property (x:Name). When browsing back to the previously visited list UBIK scrolls back to the last position. The function does not save scroll positions over different sessions.&lt;br /&gt;
Implementing the function to remember the scroll position in a ListView one has to consider that the list elements (Children) could depend on a other UI-element. If the list elements do depend on a other UI-elemente, this element has to be created above the ListView in the XAML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot; xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;uc:SelectionBoundListView x:Name=&amp;quot;ChildListView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
           &amp;lt;behaviors:FirstVisibleItemPersistenceBehavior FirstVisibleItems=&amp;quot;{Binding ScrollItems}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
     &amp;lt;/uc:SelectionBoundListView&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&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;
=== MultiBinding {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Very often we want to display some UI elements (e.g. a Grid) depending on whether multiple criteria are met. It's much easier to achieve this by using a MultiBindingBehavior like the following.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&lt;br /&gt;
    xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:MultiBindingBehavior Converter=&amp;quot;{StaticResource VisLogicAndConverter}&amp;quot; PropertyName=&amp;quot;Visibility&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding MassEditViewModel, Converter={StaticResource NullToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding Documents.Items.Count, Converter={StaticResource ItemCountToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:MultiBindingBehavior&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The behavior makes sure the container Grid is set to Visibile only if the mass editing mode is not turned on (MassEditViewModel is null) and the context object has child document(s) (Documents.Items.Count is greater than 0. You can combine any number of binding results (MultiBindingItem) using the VisLogicAndConverter (the name should be self explanatory).&lt;br /&gt;
&lt;br /&gt;
=== InvokeOnItemsCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Available on all ListViewModels, this command allows executing a specified command on a collection of list items. It can be used in combination with features such as [[Mass_Edit_(UBIK_WinX)|mass editing]] and [[XAML_Changes_in_UBIK_WinX_3.5#After_3.5|expression based collection filtering]]. Examples for both combinations are provided below.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The command specified through the &amp;quot;Command&amp;quot; parameter is executed on list items and, therefore, must be available in the list item contexts (view models). If in doubt, the [[Developer_Mode|developer mode]] can be used to inspect if a command is available in a certain context.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Parameter &amp;quot;Command&amp;quot; and &amp;quot;SelectedItemsOnly&amp;quot; are specific to the InvokeOnItemsCommand. What other parameters to define or whether to define them at all depends on the type of command to be executed on the items.}}&lt;br /&gt;
&lt;br /&gt;
==== Invoke on selected items ====&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
This example demonstrates how you can use the mass editing feature to select certain objects from the child list and then execute the SetPropertyValueCommand for those selected.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* You should insert the following code snippet into the default UBIKChildArea template;&lt;br /&gt;
* If the parameter &amp;quot;SelectedItemsOnly&amp;quot; is missed or set to &amp;quot;False&amp;quot;, the command will be executed on all child items;&lt;br /&gt;
* To enable selection, click on the &amp;quot;Mass Edit&amp;quot; button below the property list.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;Button&lt;br /&gt;
    xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
==== Invoke on filtered results ====&lt;br /&gt;
&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
* First, you need to setup a filtered list&lt;br /&gt;
**UWP: Setup a ListCollectionView in the Resources section of a UI element (e.g. Grid). This list is only available/visible within that UI element (the Grid in this case).&lt;br /&gt;
**Xamarin: Setup a String with a filtering expression &amp;amp; a SfDataSourceExt in the ResourceDictionary of the ContentView. For the Expression property of the SfDataSourceExt refer to the created expression String.&lt;br /&gt;
&lt;br /&gt;
* The ItemsSource uses Children.Items. Use the [[Developer_Mode|developer mode]] if necessary to find out if this is available where you intend to define the list;&lt;br /&gt;
* The example expression filters for any items that don't contain the text &amp;quot;EXAMPLE&amp;quot; in their Title texts. You can filter differently by altering the expression.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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 xmlns:CV=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;CV:ListCollectionView&lt;br /&gt;
                x:Key=&amp;quot;Filtered&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;!Item.Title.Contains(&amp;amp;quot;EXAMPLE&amp;amp;quot;)&amp;quot;&lt;br /&gt;
                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;
    &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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView&lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    ...&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.Title.Contains(&amp;amp;quot;EXAMLPLE&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt x:Key=&amp;quot;Filtered&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&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;/ContentView&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
With the filtered list configured, you can then insert the following code snippet to execute the SetPropertyValueCommand for the filtered result items.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* The &amp;quot;Filtered&amp;quot; refers to the ListCollectionView (UWP) or SfDataSourceExt  (Xamarin) configured above.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;AllApps&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50&amp;quot;&lt;br /&gt;
      Style=&amp;quot;{ThemeResource UBIKActionAppBarButton}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&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;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&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;
{{Attention|The binding &amp;lt;code&amp;gt;ListViewModel.InvokeOnItemsCommand&amp;lt;/code&amp;gt; should be updated to &amp;lt;code&amp;gt;BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; starting from version 4.3.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Support for old styled commands ====&lt;br /&gt;
Some old commands might not support KeyValueLists as parameters. In that case, just define the parameter value under the &amp;quot;CommandParameter&amp;quot; key, e.g.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;CommandParameter&amp;quot; Value=&amp;quot;some string value for example&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;.&lt;br /&gt;
This single value is then passed as the command parameter instead of the entire KeyValueList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SetPropertyValueCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
This command existed before but was implemented differently. In the newer version(s), it is improved to provide customizers more control over the things that happen during/after the property value changes.&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* PropertyName: the name of the property to set a new value to;&lt;br /&gt;
* PropertyValue: the value to be set to the above mentioned property;&lt;br /&gt;
* OnlyForUnvalidated (optional, defaults to false): When set to true, the value will only be set if the property is not yet validated;&lt;br /&gt;
* AutoSave (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and database;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be committed to the server.&lt;br /&gt;
&lt;br /&gt;
{{Hint|There's no way to commit changes without saving them locally first. Therefore, the &amp;quot;AutoSave&amp;quot; parameter will be ignored when &amp;quot;AutoCommit&amp;quot; is set to true.}}&lt;br /&gt;
&lt;br /&gt;
Here's an example of the command usage. It tries to set the property called &amp;quot;VALUE&amp;quot; to a double value 50 regardless of its current state and then automatically save and commit the change.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;Edit&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50%&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                      &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                  &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
              &amp;lt;/example:KeyValueParameter&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|It is advised to provide typed values like &amp;lt;nowiki&amp;gt;&amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&amp;lt;/nowiki&amp;gt;. But for simple types, you can try writing them in the text format like &amp;lt;nowiki&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt; and {{UBIK}} will try to find the right type.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DisplayViewCommand ===&lt;br /&gt;
This command can be used to [[Custom_View_(Client)|display cutom views]].&lt;br /&gt;
&lt;br /&gt;
=== TeachInCommand ===&lt;br /&gt;
With the '''TeachInCommand''' you're allowed to set your device's current location (&amp;quot;teach-in&amp;quot;, &amp;quot;TeachIn&amp;quot;) as the value of the context object's [[SYSCLS_GEO|geo property]].&lt;br /&gt;
This command is available in both '''ContentViewModel''' and '''PropertyViewModel'''.&lt;br /&gt;
* ContentViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the context object's [[SYSCLS_GEO|geo property]]. Saves and commits the change;&lt;br /&gt;
* PropertyViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the current property if it's a geo property (not necessarily the [[SYSCLS_GEO|geo property]]). Addtionally supports a boolean command parameter:&lt;br /&gt;
** False (default): The change is not automatically saved. &lt;br /&gt;
** True: The change is saved.&lt;br /&gt;
&amp;lt;br/&amp;gt; {{hint| Make sure you use the correct binding path for your command depending on your current context view model. E.g., if the context view model is already the ContentViewModel then your binding path should simply be TeachInCommand. You can use the [[Developer_Mode|developer mode]] to find out the current view model in a view.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UpdateArbitraryObjectCommand {{Version/WinXSince|4.7}}===&lt;br /&gt;
The &amp;quot;UpdateArbitraryObjectCommand&amp;quot; is responsible for updating an arbitrary object based on a set of provided parameters. The command is accessible in the AppStatusViewModel (as '''ViewModel.Appstatus'''). &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* Uid (Mandatory): UID of the object to be updated;&lt;br /&gt;
* UpdateChildDepth (Optional): Child depth/level to update (defaults to 1);&lt;br /&gt;
* UpdateParentDepth (Optional): Parent depth/level to update (defaults to 0);&lt;br /&gt;
* UpdateIgnoreExpiry (Optional): Ignore update expiry (defaults to false); &lt;br /&gt;
&lt;br /&gt;
{{Hint|Note that if you set the UpdateChildDepth property to &amp;quot;-1&amp;quot; you are also able to update a whole branch with this command.}}&lt;br /&gt;
&lt;br /&gt;
Here is an example of the command usage: &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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&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;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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:uc=&amp;quot;using:clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&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;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&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;/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;
&lt;br /&gt;
&lt;br /&gt;
=== Access to an arbitrary object {{Version/WinXSince|4.6}} {{Version/XamarinSince|4.6}} ===&lt;br /&gt;
With the ObjectByUID feature it is possible to access any local arbitrary object by its UID and, for example, display a value of it.&lt;br /&gt;
It can be accessed from ContentViewModel, AuthenticationViewModel, and RootPageViewModel levels.&lt;br /&gt;
&lt;br /&gt;
To display a string of e.g. a property of an arbitrary object from ContentViewModel, AuthenticationViewModel &amp;amp; RootPageViewModel, the following syntax can be used in related XAMLs:&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;TextBlock Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
For Property Dialogs the CallingViewModel prefix is needed to access an arbitrary object:&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;TextBlock Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&lt;br /&gt;
&lt;br /&gt;
==== UI virtualization ====&lt;br /&gt;
When using the FlipView control in your XAML code, it's better to enable [https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview#ui-virtualization UI virtualization]. The difference in performance gets more obvious as the number of items in the FlipView increases. Here's how to enable it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;FlipView&lt;br /&gt;
    ...&lt;br /&gt;
    VirtualizingStackPanel.VirtualizationMode=&amp;quot;Standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
        &amp;lt;ItemsPanelTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;VirtualizingStackPanel Orientation=&amp;quot;Horizontal&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ItemsPanelTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
&amp;lt;/FlipView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auto saving ====&lt;br /&gt;
Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Changes are lost when leaving the page without flipping the document first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualizingStackPanel.VirtualizationMode offers two possibilities: Standard &amp;amp; Recycling. In case you are interested, here are their [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizationmode?view=netframework-4.7.2 differences].&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25767</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25767"/>
				<updated>2024-01-17T08:30:29Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* UpdateArbitraryObjectCommand {{Version/WinXSince|4.6}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Attachable behaviors ===&lt;br /&gt;
It's quite often that you need to attach behaviors to certain XAML elements. For example, on a Grid, you want to attach a behavior which executes a command upon a Tapped event, or you want to execute a command when a certain property on a UBIK object changes.&lt;br /&gt;
&lt;br /&gt;
Notice that in the following examples, &amp;quot;Interactivity&amp;quot; and &amp;quot;Core&amp;quot; are both namespaces and you have to make sure that they are defined at the root of your XAMLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:Core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Event Triggered ====&lt;br /&gt;
With an EventTriggerBehavior, you can react on changes/events of UI Elements:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&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 NavigateToChildrenCommand}&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;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Triggered ====&lt;br /&gt;
If you want to react on changes of the underlying data (ViewModel), you can use DataTriggerBehavior instead. The following example, when used in the ''UBIKSplashArea'' template, automatically navigates to the root objects once the login process is finished and the user was successfully authenticated:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
       &amp;lt;Core:DataTriggerBehavior Binding=&amp;quot;{Binding IsLoggedIn}&amp;quot; Value=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding NavigateToRootPageCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/Core:DataTriggerBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;/Interactivity:Interaction.Behaviors&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content creation === &lt;br /&gt;
{{Version/WinXSince|3.5.5}}&lt;br /&gt;
To directly create an object on a child of the current object, you can define a Button as follows. The method &amp;quot;Item.IsTypeCreationAllowed&amp;quot;  used in the expression gets the uid of the type that should be created below a child, if a child does not allow the creation of that type underneath it, the child will be hidden in the selection dialog. To actually create the object, the &amp;quot;CreateChildItemCommand&amp;quot; needs to be passed a KeyValueList with two parameters: The Parent-key is the UID or the ContentViewModel of the child underneath the object should be created, the Type-key is the type of object which should be created--this should match the uid passed to the &amp;quot;Item.IsTypeCreationAllowed&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    xmlns:cv=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;6D733909-1742-4110-8619-237849BFE453&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;{Binding Tag, ElementName=CreateButton}&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, the following optional parameters can be added as well.&lt;br /&gt;
* CreateOnly (optional, defaults to false): When set to true, the client will not automatically navigate to the created content, rather automatically save and commit it. If set to true, this overrides the following parameters;&lt;br /&gt;
* AutoNavigate (optional, defaults to true): When set to false, the client will not automatically navigate to the created content;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and the database, and then committed to the server.&lt;br /&gt;
&lt;br /&gt;
=== Creating multiple documents ===&lt;br /&gt;
To upload multiple documents at once, the CreateChildItemsCommand can be used. The list of supported command parameters are similar to those of the CreateChildItemCommand (single item). Except that anything other than AutoNavigate=false and AutoCommit=true do not make sense in multi-creation scenario. Therefore, those parameters are fixed and any received from XAML will be ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;--&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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&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;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable FilloutCriteria  ===&lt;br /&gt;
{{Version/WinXSince|3.5}}&lt;br /&gt;
To enable/disable the automatic filtering of a query based on the ParentObject, there is the possibility to specify EnableFillOutCriteria--if it is not set, it defaults to false. Additionaly &amp;quot;SkipDialog&amp;quot; can be set to true, to not display a dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid x:Name=&amp;quot;selectionGrid&amp;quot; Tag=&amp;quot;{Binding MetaUID}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Interactivity:Interaction.Behaviors&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 ElementName=ChildAreaGrid, Path=DataContext.AddTemplatableDataCommand}&amp;quot; &amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
                        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;{Binding Tag,ElementName=selectionGrid}&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;EnableFillOutCriteria&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;SkipDialog&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
               &amp;lt;/Core:InvokeCommandAction&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;/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;
&lt;br /&gt;
&lt;br /&gt;
=== Hotspotting ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
The hotspotting command is used for hotspotting as well as for annotating, to configure the button for hotspotting, the commandparameter &amp;quot;Mode&amp;quot; should be set to &amp;quot;HotSpotting&amp;quot;, for annotating the &amp;quot;Mode&amp;quot; should be &amp;quot;Annotate&amp;quot;. The parameter commit is optional, if set to true, the changes get automatically persisted when leaving the editing mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AppBarToggleButton&lt;br /&gt;
		IsChecked=&amp;quot;{Binding EditingAnnotation, Mode=TwoWay}&amp;quot;&lt;br /&gt;
		IsEnabled=&amp;quot;{Binding IsAnnotatable}&amp;quot;&lt;br /&gt;
		Command=&amp;quot;{Binding HotSpottingCommand}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Mode&amp;quot; Value=&amp;quot;Annotate&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Commit&amp;quot; Value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
		&amp;lt;/AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarToggleButton&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;
=== Remember scroll positions of list views ===&lt;br /&gt;
&lt;br /&gt;
==== Version 3.7 &amp;amp; later {{Version/WinXSince|3.7}} ====&lt;br /&gt;
Starting from this version,&lt;br /&gt;
* The precision of scroll position remembering is improved(by pixel offsets instead of by items);&lt;br /&gt;
* It also works for other scrollable lists (instead of just for content object lists).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To enable this feature, you should make sure the following.&lt;br /&gt;
* The SelectionBoundListView is used instead of the standard ListView. Its {{UBIK}} namespace is &amp;lt;code&amp;gt;UBIK.WinX.Controls&amp;lt;/code&amp;gt;;&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;RememberScrollPosition&amp;lt;/code&amp;gt; property is not set to &amp;quot;false&amp;quot;; (It's &amp;quot;true&amp;quot; by default.)&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;x:Name&amp;lt;/code&amp;gt; property value is unique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Version 3.6  {{Version/WinXSince|3.6}} ====&lt;br /&gt;
The UBIK-Client does include a function to remember the position in a list (ListView) when navigating away from it. This function is only available when the list (ListView) has a unique name as a property (x:Name). When browsing back to the previously visited list UBIK scrolls back to the last position. The function does not save scroll positions over different sessions.&lt;br /&gt;
Implementing the function to remember the scroll position in a ListView one has to consider that the list elements (Children) could depend on a other UI-element. If the list elements do depend on a other UI-elemente, this element has to be created above the ListView in the XAML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot; xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;uc:SelectionBoundListView x:Name=&amp;quot;ChildListView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
           &amp;lt;behaviors:FirstVisibleItemPersistenceBehavior FirstVisibleItems=&amp;quot;{Binding ScrollItems}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
     &amp;lt;/uc:SelectionBoundListView&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&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;
=== MultiBinding {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Very often we want to display some UI elements (e.g. a Grid) depending on whether multiple criteria are met. It's much easier to achieve this by using a MultiBindingBehavior like the following.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&lt;br /&gt;
    xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:MultiBindingBehavior Converter=&amp;quot;{StaticResource VisLogicAndConverter}&amp;quot; PropertyName=&amp;quot;Visibility&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding MassEditViewModel, Converter={StaticResource NullToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding Documents.Items.Count, Converter={StaticResource ItemCountToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:MultiBindingBehavior&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The behavior makes sure the container Grid is set to Visibile only if the mass editing mode is not turned on (MassEditViewModel is null) and the context object has child document(s) (Documents.Items.Count is greater than 0. You can combine any number of binding results (MultiBindingItem) using the VisLogicAndConverter (the name should be self explanatory).&lt;br /&gt;
&lt;br /&gt;
=== InvokeOnItemsCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Available on all ListViewModels, this command allows executing a specified command on a collection of list items. It can be used in combination with features such as [[Mass_Edit_(UBIK_WinX)|mass editing]] and [[XAML_Changes_in_UBIK_WinX_3.5#After_3.5|expression based collection filtering]]. Examples for both combinations are provided below.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The command specified through the &amp;quot;Command&amp;quot; parameter is executed on list items and, therefore, must be available in the list item contexts (view models). If in doubt, the [[Developer_Mode|developer mode]] can be used to inspect if a command is available in a certain context.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Parameter &amp;quot;Command&amp;quot; and &amp;quot;SelectedItemsOnly&amp;quot; are specific to the InvokeOnItemsCommand. What other parameters to define or whether to define them at all depends on the type of command to be executed on the items.}}&lt;br /&gt;
&lt;br /&gt;
==== Invoke on selected items ====&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
This example demonstrates how you can use the mass editing feature to select certain objects from the child list and then execute the SetPropertyValueCommand for those selected.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* You should insert the following code snippet into the default UBIKChildArea template;&lt;br /&gt;
* If the parameter &amp;quot;SelectedItemsOnly&amp;quot; is missed or set to &amp;quot;False&amp;quot;, the command will be executed on all child items;&lt;br /&gt;
* To enable selection, click on the &amp;quot;Mass Edit&amp;quot; button below the property list.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;Button&lt;br /&gt;
    xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
==== Invoke on filtered results ====&lt;br /&gt;
&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
* First, you need to setup a filtered list&lt;br /&gt;
**UWP: Setup a ListCollectionView in the Resources section of a UI element (e.g. Grid). This list is only available/visible within that UI element (the Grid in this case).&lt;br /&gt;
**Xamarin: Setup a String with a filtering expression &amp;amp; a SfDataSourceExt in the ResourceDictionary of the ContentView. For the Expression property of the SfDataSourceExt refer to the created expression String.&lt;br /&gt;
&lt;br /&gt;
* The ItemsSource uses Children.Items. Use the [[Developer_Mode|developer mode]] if necessary to find out if this is available where you intend to define the list;&lt;br /&gt;
* The example expression filters for any items that don't contain the text &amp;quot;EXAMPLE&amp;quot; in their Title texts. You can filter differently by altering the expression.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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 xmlns:CV=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;CV:ListCollectionView&lt;br /&gt;
                x:Key=&amp;quot;Filtered&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;!Item.Title.Contains(&amp;amp;quot;EXAMPLE&amp;amp;quot;)&amp;quot;&lt;br /&gt;
                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;
    &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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView&lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    ...&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.Title.Contains(&amp;amp;quot;EXAMLPLE&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt x:Key=&amp;quot;Filtered&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&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;/ContentView&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
With the filtered list configured, you can then insert the following code snippet to execute the SetPropertyValueCommand for the filtered result items.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* The &amp;quot;Filtered&amp;quot; refers to the ListCollectionView (UWP) or SfDataSourceExt  (Xamarin) configured above.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;AllApps&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50&amp;quot;&lt;br /&gt;
      Style=&amp;quot;{ThemeResource UBIKActionAppBarButton}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&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;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&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;
{{Attention|The binding &amp;lt;code&amp;gt;ListViewModel.InvokeOnItemsCommand&amp;lt;/code&amp;gt; should be updated to &amp;lt;code&amp;gt;BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; starting from version 4.3.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Support for old styled commands ====&lt;br /&gt;
Some old commands might not support KeyValueLists as parameters. In that case, just define the parameter value under the &amp;quot;CommandParameter&amp;quot; key, e.g.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;CommandParameter&amp;quot; Value=&amp;quot;some string value for example&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;.&lt;br /&gt;
This single value is then passed as the command parameter instead of the entire KeyValueList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SetPropertyValueCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
This command existed before but was implemented differently. In the newer version(s), it is improved to provide customizers more control over the things that happen during/after the property value changes.&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* PropertyName: the name of the property to set a new value to;&lt;br /&gt;
* PropertyValue: the value to be set to the above mentioned property;&lt;br /&gt;
* OnlyForUnvalidated (optional, defaults to false): When set to true, the value will only be set if the property is not yet validated;&lt;br /&gt;
* AutoSave (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and database;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be committed to the server.&lt;br /&gt;
&lt;br /&gt;
{{Hint|There's no way to commit changes without saving them locally first. Therefore, the &amp;quot;AutoSave&amp;quot; parameter will be ignored when &amp;quot;AutoCommit&amp;quot; is set to true.}}&lt;br /&gt;
&lt;br /&gt;
Here's an example of the command usage. It tries to set the property called &amp;quot;VALUE&amp;quot; to a double value 50 regardless of its current state and then automatically save and commit the change.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;Edit&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50%&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                      &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                  &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
              &amp;lt;/example:KeyValueParameter&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|It is advised to provide typed values like &amp;lt;nowiki&amp;gt;&amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&amp;lt;/nowiki&amp;gt;. But for simple types, you can try writing them in the text format like &amp;lt;nowiki&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt; and {{UBIK}} will try to find the right type.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DisplayViewCommand ===&lt;br /&gt;
This command can be used to [[Custom_View_(Client)|display cutom views]].&lt;br /&gt;
&lt;br /&gt;
=== TeachInCommand ===&lt;br /&gt;
With the '''TeachInCommand''' you're allowed to set your device's current location (&amp;quot;teach-in&amp;quot;, &amp;quot;TeachIn&amp;quot;) as the value of the context object's [[SYSCLS_GEO|geo property]].&lt;br /&gt;
This command is available in both '''ContentViewModel''' and '''PropertyViewModel'''.&lt;br /&gt;
* ContentViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the context object's [[SYSCLS_GEO|geo property]]. Saves and commits the change;&lt;br /&gt;
* PropertyViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the current property if it's a geo property (not necessarily the [[SYSCLS_GEO|geo property]]). Addtionally supports a boolean command parameter:&lt;br /&gt;
** False (default): The change is not automatically saved. &lt;br /&gt;
** True: The change is saved.&lt;br /&gt;
&amp;lt;br/&amp;gt; {{hint| Make sure you use the correct binding path for your command depending on your current context view model. E.g., if the context view model is already the ContentViewModel then your binding path should simply be TeachInCommand. You can use the [[Developer_Mode|developer mode]] to find out the current view model in a view.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UpdateArbitraryObjectCommand {{Version/WinXSince|4.7}}===&lt;br /&gt;
The &amp;quot;UpdateArbitraryObjectCommand&amp;quot; is responsible for updating an arbitrary object based on a set of provided parameters. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* Uid (Mandatory): UID of the object to be updated;&lt;br /&gt;
* UpdateChildDepth (Optional): Child depth/level to update (defaults to 1);&lt;br /&gt;
* UpdateParentDepth (Optional): Parent depth/level to update (defaults to 0);&lt;br /&gt;
* UpdateIgnoreExpiry (Optional): Ignore update expiry (defaults to false); &lt;br /&gt;
&lt;br /&gt;
{{Hint|Note that if you set the UpdateChildDepth property to &amp;quot;-1&amp;quot; you are also able to update a whole branch with this command.}}&lt;br /&gt;
&lt;br /&gt;
Here is an example of the command usage: &lt;br /&gt;
&amp;lt;br /&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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&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;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&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;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
=== Access to an arbitrary object {{Version/WinXSince|4.6}} {{Version/XamarinSince|4.6}} ===&lt;br /&gt;
With the ObjectByUID feature it is possible to access any local arbitrary object by its UID and, for example, display a value of it.&lt;br /&gt;
It can be accessed from ContentViewModel, AuthenticationViewModel, and RootPageViewModel levels.&lt;br /&gt;
&lt;br /&gt;
To display a string of e.g. a property of an arbitrary object from ContentViewModel, AuthenticationViewModel &amp;amp; RootPageViewModel, the following syntax can be used in related XAMLs:&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;TextBlock Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
For Property Dialogs the CallingViewModel prefix is needed to access an arbitrary object:&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;TextBlock Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&lt;br /&gt;
&lt;br /&gt;
==== UI virtualization ====&lt;br /&gt;
When using the FlipView control in your XAML code, it's better to enable [https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview#ui-virtualization UI virtualization]. The difference in performance gets more obvious as the number of items in the FlipView increases. Here's how to enable it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;FlipView&lt;br /&gt;
    ...&lt;br /&gt;
    VirtualizingStackPanel.VirtualizationMode=&amp;quot;Standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
        &amp;lt;ItemsPanelTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;VirtualizingStackPanel Orientation=&amp;quot;Horizontal&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ItemsPanelTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
&amp;lt;/FlipView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auto saving ====&lt;br /&gt;
Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Changes are lost when leaving the page without flipping the document first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualizingStackPanel.VirtualizationMode offers two possibilities: Standard &amp;amp; Recycling. In case you are interested, here are their [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizationmode?view=netframework-4.7.2 differences].&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25766</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=25766"/>
				<updated>2024-01-17T08:18:57Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Attachable behaviors ===&lt;br /&gt;
It's quite often that you need to attach behaviors to certain XAML elements. For example, on a Grid, you want to attach a behavior which executes a command upon a Tapped event, or you want to execute a command when a certain property on a UBIK object changes.&lt;br /&gt;
&lt;br /&gt;
Notice that in the following examples, &amp;quot;Interactivity&amp;quot; and &amp;quot;Core&amp;quot; are both namespaces and you have to make sure that they are defined at the root of your XAMLs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:Core=&amp;quot;using:Microsoft.Xaml.Interactions.Core&amp;quot;&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Event Triggered ====&lt;br /&gt;
With an EventTriggerBehavior, you can react on changes/events of UI Elements:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&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 NavigateToChildrenCommand}&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;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Data Triggered ====&lt;br /&gt;
If you want to react on changes of the underlying data (ViewModel), you can use DataTriggerBehavior instead. The following example, when used in the ''UBIKSplashArea'' template, automatically navigates to the root objects once the login process is finished and the user was successfully authenticated:&lt;br /&gt;
&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;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
       &amp;lt;Core:DataTriggerBehavior Binding=&amp;quot;{Binding IsLoggedIn}&amp;quot; Value=&amp;quot;True&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding NavigateToRootPageCommand}&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/Core:DataTriggerBehavior&amp;gt;&lt;br /&gt;
    &amp;lt;/Interactivity:Interaction.Behaviors&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content creation === &lt;br /&gt;
{{Version/WinXSince|3.5.5}}&lt;br /&gt;
To directly create an object on a child of the current object, you can define a Button as follows. The method &amp;quot;Item.IsTypeCreationAllowed&amp;quot;  used in the expression gets the uid of the type that should be created below a child, if a child does not allow the creation of that type underneath it, the child will be hidden in the selection dialog. To actually create the object, the &amp;quot;CreateChildItemCommand&amp;quot; needs to be passed a KeyValueList with two parameters: The Parent-key is the UID or the ContentViewModel of the child underneath the object should be created, the Type-key is the type of object which should be created--this should match the uid passed to the &amp;quot;Item.IsTypeCreationAllowed&amp;quot; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    xmlns:cv=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;6D733909-1742-4110-8619-237849BFE453&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;x:String x:Key=&amp;quot;PlantMap&amp;quot;&amp;gt;Item.IsTypeCreationAllowed(&amp;amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
&amp;lt;cv:ListCollectionView x:Key=&amp;quot;PlantMapView&amp;quot; Expression=&amp;quot;{StaticResource PlantMap}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;AppBarButton.Flyout&amp;gt;&lt;br /&gt;
  &amp;lt;Flyout Placement=&amp;quot;Full&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;ListView ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;ListView.ItemTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;DataTemplate&amp;gt;&lt;br /&gt;
		&amp;lt;Button Content=&amp;quot;{Binding Header}&amp;quot; Command=&amp;quot;{Binding CreateChildItemCommand}&amp;quot; x:Name=&amp;quot;CreateButton&amp;quot; Tag=&amp;quot;{Binding}&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;Parent&amp;quot; Value=&amp;quot;{Binding Tag, ElementName=CreateButton}&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Type&amp;quot; Value=&amp;quot;21fc990a-d064-4bee-8d48-3293351f827a&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;/DataTemplate&amp;gt;&lt;br /&gt;
	  &amp;lt;/ListView.ItemTemplate&amp;gt;&lt;br /&gt;
	&amp;lt;/ListView&amp;gt;&lt;br /&gt;
  &amp;lt;/Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton.Flyout&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, the following optional parameters can be added as well.&lt;br /&gt;
* CreateOnly (optional, defaults to false): When set to true, the client will not automatically navigate to the created content, rather automatically save and commit it. If set to true, this overrides the following parameters;&lt;br /&gt;
* AutoNavigate (optional, defaults to true): When set to false, the client will not automatically navigate to the created content;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and the database, and then committed to the server.&lt;br /&gt;
&lt;br /&gt;
=== Creating multiple documents ===&lt;br /&gt;
To upload multiple documents at once, the CreateChildItemsCommand can be used. The list of supported command parameters are similar to those of the CreateChildItemCommand (single item). Except that anything other than AutoNavigate=false and AutoCommit=true do not make sense in multi-creation scenario. Therefore, those parameters are fixed and any received from XAML will be ignored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &amp;lt;tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;--&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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&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;/source&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CreateChildItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Create multiple documents&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;Type&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;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Disable FilloutCriteria  ===&lt;br /&gt;
{{Version/WinXSince|3.5}}&lt;br /&gt;
To enable/disable the automatic filtering of a query based on the ParentObject, there is the possibility to specify EnableFillOutCriteria--if it is not set, it defaults to false. Additionaly &amp;quot;SkipDialog&amp;quot; can be set to true, to not display a dialog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid x:Name=&amp;quot;selectionGrid&amp;quot; Tag=&amp;quot;{Binding MetaUID}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Interactivity:Interaction.Behaviors&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 ElementName=ChildAreaGrid, Path=DataContext.AddTemplatableDataCommand}&amp;quot; &amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
                        &amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;Uid&amp;quot; Value=&amp;quot;{Binding Tag,ElementName=selectionGrid}&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;EnableFillOutCriteria&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                            &amp;lt;uc:KeyValueParameter Key=&amp;quot;SkipDialog&amp;quot; Value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
                        &amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:InvokeCommandAction.CommandParameter&amp;gt;&lt;br /&gt;
               &amp;lt;/Core:InvokeCommandAction&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;/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;
&lt;br /&gt;
&lt;br /&gt;
=== Hotspotting ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
The hotspotting command is used for hotspotting as well as for annotating, to configure the button for hotspotting, the commandparameter &amp;quot;Mode&amp;quot; should be set to &amp;quot;HotSpotting&amp;quot;, for annotating the &amp;quot;Mode&amp;quot; should be &amp;quot;Annotate&amp;quot;. The parameter commit is optional, if set to true, the changes get automatically persisted when leaving the editing mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AppBarToggleButton&lt;br /&gt;
		IsChecked=&amp;quot;{Binding EditingAnnotation, Mode=TwoWay}&amp;quot;&lt;br /&gt;
		IsEnabled=&amp;quot;{Binding IsAnnotatable}&amp;quot;&lt;br /&gt;
		Command=&amp;quot;{Binding HotSpottingCommand}&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Mode&amp;quot; Value=&amp;quot;Annotate&amp;quot;/&amp;gt;&lt;br /&gt;
				&amp;lt;uc:KeyValueParameter Key=&amp;quot;Commit&amp;quot; Value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
			&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
		&amp;lt;/AppBarToggleButton.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/AppBarToggleButton&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;
=== Remember scroll positions of list views ===&lt;br /&gt;
&lt;br /&gt;
==== Version 3.7 &amp;amp; later {{Version/WinXSince|3.7}} ====&lt;br /&gt;
Starting from this version,&lt;br /&gt;
* The precision of scroll position remembering is improved(by pixel offsets instead of by items);&lt;br /&gt;
* It also works for other scrollable lists (instead of just for content object lists).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
To enable this feature, you should make sure the following.&lt;br /&gt;
* The SelectionBoundListView is used instead of the standard ListView. Its {{UBIK}} namespace is &amp;lt;code&amp;gt;UBIK.WinX.Controls&amp;lt;/code&amp;gt;;&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;RememberScrollPosition&amp;lt;/code&amp;gt; property is not set to &amp;quot;false&amp;quot;; (It's &amp;quot;true&amp;quot; by default.)&lt;br /&gt;
* The SelectionBoundListView's &amp;lt;code&amp;gt;x:Name&amp;lt;/code&amp;gt; property value is unique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Version 3.6  {{Version/WinXSince|3.6}} ====&lt;br /&gt;
The UBIK-Client does include a function to remember the position in a list (ListView) when navigating away from it. This function is only available when the list (ListView) has a unique name as a property (x:Name). When browsing back to the previously visited list UBIK scrolls back to the last position. The function does not save scroll positions over different sessions.&lt;br /&gt;
Implementing the function to remember the scroll position in a ListView one has to consider that the list elements (Children) could depend on a other UI-element. If the list elements do depend on a other UI-elemente, this element has to be created above the ListView in the XAML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot; xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;uc:SelectionBoundListView x:Name=&amp;quot;ChildListView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
           &amp;lt;behaviors:FirstVisibleItemPersistenceBehavior FirstVisibleItems=&amp;quot;{Binding ScrollItems}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
     &amp;lt;/uc:SelectionBoundListView&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&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;
=== MultiBinding {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Very often we want to display some UI elements (e.g. a Grid) depending on whether multiple criteria are met. It's much easier to achieve this by using a MultiBindingBehavior like the following.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;DataTemplate&lt;br /&gt;
    xmlns:Interactivity=&amp;quot;using:Microsoft.Xaml.Interactivity&amp;quot;&lt;br /&gt;
    xmlns:behaviors=&amp;quot;using:UBIK.WinX.Behaviors&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:MultiBindingBehavior Converter=&amp;quot;{StaticResource VisLogicAndConverter}&amp;quot; PropertyName=&amp;quot;Visibility&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding MassEditViewModel, Converter={StaticResource NullToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;behaviors:MultiBindingItem Value=&amp;quot;{Binding Documents.Items.Count, Converter={StaticResource ItemCountToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/behaviors:MultiBindingBehavior&amp;gt;&lt;br /&gt;
        &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The behavior makes sure the container Grid is set to Visibile only if the mass editing mode is not turned on (MassEditViewModel is null) and the context object has child document(s) (Documents.Items.Count is greater than 0. You can combine any number of binding results (MultiBindingItem) using the VisLogicAndConverter (the name should be self explanatory).&lt;br /&gt;
&lt;br /&gt;
=== InvokeOnItemsCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
Available on all ListViewModels, this command allows executing a specified command on a collection of list items. It can be used in combination with features such as [[Mass_Edit_(UBIK_WinX)|mass editing]] and [[XAML_Changes_in_UBIK_WinX_3.5#After_3.5|expression based collection filtering]]. Examples for both combinations are provided below.&lt;br /&gt;
&lt;br /&gt;
{{Attention|The command specified through the &amp;quot;Command&amp;quot; parameter is executed on list items and, therefore, must be available in the list item contexts (view models). If in doubt, the [[Developer_Mode|developer mode]] can be used to inspect if a command is available in a certain context.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Parameter &amp;quot;Command&amp;quot; and &amp;quot;SelectedItemsOnly&amp;quot; are specific to the InvokeOnItemsCommand. What other parameters to define or whether to define them at all depends on the type of command to be executed on the items.}}&lt;br /&gt;
&lt;br /&gt;
==== Invoke on selected items ====&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
This example demonstrates how you can use the mass editing feature to select certain objects from the child list and then execute the SetPropertyValueCommand for those selected.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* You should insert the following code snippet into the default UBIKChildArea template;&lt;br /&gt;
* If the parameter &amp;quot;SelectedItemsOnly&amp;quot; is missed or set to &amp;quot;False&amp;quot;, the command will be executed on all child items;&lt;br /&gt;
* To enable selection, click on the &amp;quot;Mass Edit&amp;quot; button below the property list.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;Button&lt;br /&gt;
    xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Children.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50%&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;SelectedItemsOnly&amp;quot; Value=&amp;quot;False&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                    &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
            &amp;lt;/example:KeyValueParameter&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;
==== Invoke on filtered results ====&lt;br /&gt;
&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
* First, you need to setup a filtered list&lt;br /&gt;
**UWP: Setup a ListCollectionView in the Resources section of a UI element (e.g. Grid). This list is only available/visible within that UI element (the Grid in this case).&lt;br /&gt;
**Xamarin: Setup a String with a filtering expression &amp;amp; a SfDataSourceExt in the ResourceDictionary of the ContentView. For the Expression property of the SfDataSourceExt refer to the created expression String.&lt;br /&gt;
&lt;br /&gt;
* The ItemsSource uses Children.Items. Use the [[Developer_Mode|developer mode]] if necessary to find out if this is available where you intend to define the list;&lt;br /&gt;
* The example expression filters for any items that don't contain the text &amp;quot;EXAMPLE&amp;quot; in their Title texts. You can filter differently by altering the expression.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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 xmlns:CV=&amp;quot;using:UBIK.WinX.UI.CollectionView&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;CV:ListCollectionView&lt;br /&gt;
                x:Key=&amp;quot;Filtered&amp;quot;&lt;br /&gt;
                Expression=&amp;quot;!Item.Title.Contains(&amp;amp;quot;EXAMPLE&amp;amp;quot;)&amp;quot;&lt;br /&gt;
                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;
    &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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView&lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    ...&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.Title.Contains(&amp;amp;quot;EXAMLPLE&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt x:Key=&amp;quot;Filtered&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&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;/ContentView&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;
&amp;lt;br /&amp;gt;&lt;br /&gt;
With the filtered list configured, you can then insert the following code snippet to execute the SetPropertyValueCommand for the filtered result items.&lt;br /&gt;
* The example code assumes that the child objects have an editable property called &amp;quot;VALUE&amp;quot; and tries to set 50 as their value;&lt;br /&gt;
* The &amp;quot;Filtered&amp;quot; refers to the ListCollectionView (UWP) or SfDataSourceExt  (Xamarin) configured above.&lt;br /&gt;
&amp;lt;br /&amp;gt;&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;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;AllApps&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50&amp;quot;&lt;br /&gt;
      Style=&amp;quot;{ThemeResource UBIKActionAppBarButton}&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&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;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;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding Source={StaticResource Filtered}, Path=ListViewModel.InvokeOnItemsCommand}&amp;quot;&lt;br /&gt;
    Text=&amp;quot;Set to 50&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;Command&amp;quot; Value=&amp;quot;SetPropertyValueCommand&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&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;
{{Attention|The binding &amp;lt;code&amp;gt;ListViewModel.InvokeOnItemsCommand&amp;lt;/code&amp;gt; should be updated to &amp;lt;code&amp;gt;BulkOperation.InvokeOnItemsCommand&amp;lt;/code&amp;gt; starting from version 4.3.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Support for old styled commands ====&lt;br /&gt;
Some old commands might not support KeyValueLists as parameters. In that case, just define the parameter value under the &amp;quot;CommandParameter&amp;quot; key, e.g.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;CommandParameter&amp;quot; Value=&amp;quot;some string value for example&amp;quot; /&amp;gt;&amp;lt;/source&amp;gt;.&lt;br /&gt;
This single value is then passed as the command parameter instead of the entire KeyValueList.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SetPropertyValueCommand {{Version/WinXSince|3.6}} ===&lt;br /&gt;
{{Attention|To use a binding in the KeyValueParameter, it has to be applied like in the example provided here: [[KeyValueList]]}}&lt;br /&gt;
&lt;br /&gt;
This command existed before but was implemented differently. In the newer version(s), it is improved to provide customizers more control over the things that happen during/after the property value changes.&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* PropertyName: the name of the property to set a new value to;&lt;br /&gt;
* PropertyValue: the value to be set to the above mentioned property;&lt;br /&gt;
* OnlyForUnvalidated (optional, defaults to false): When set to true, the value will only be set if the property is not yet validated;&lt;br /&gt;
* AutoSave (optional, defaults to false): When set to true, the change(s) will be saved to the local cache and database;&lt;br /&gt;
* AutoCommit (optional, defaults to false): When set to true, the change(s) will be committed to the server.&lt;br /&gt;
&lt;br /&gt;
{{Hint|There's no way to commit changes without saving them locally first. Therefore, the &amp;quot;AutoSave&amp;quot; parameter will be ignored when &amp;quot;AutoCommit&amp;quot; is set to true.}}&lt;br /&gt;
&lt;br /&gt;
Here's an example of the command usage. It tries to set the property called &amp;quot;VALUE&amp;quot; to a double value 50 regardless of its current state and then automatically save and commit the change.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AppBarButton&lt;br /&gt;
      xmlns:example=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
      Command=&amp;quot;{Binding SetPropertyValueCommand}&amp;quot;&lt;br /&gt;
      Icon=&amp;quot;Edit&amp;quot;&lt;br /&gt;
      Label=&amp;quot;Set to 50%&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
          &amp;lt;example:KeyValueList&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyName&amp;quot; Value=&amp;quot;VALUE&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot;&amp;gt;&lt;br /&gt;
                  &amp;lt;example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
                      &amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&lt;br /&gt;
                  &amp;lt;/example:KeyValueParameter.Value&amp;gt;&lt;br /&gt;
              &amp;lt;/example:KeyValueParameter&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;OnlyForUnvalidated&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoSave&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;example:KeyValueParameter Key=&amp;quot;AutoCommit&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/example:KeyValueList&amp;gt;&lt;br /&gt;
      &amp;lt;/AppBarButton.CommandParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/AppBarButton&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|It is advised to provide typed values like &amp;lt;nowiki&amp;gt;&amp;lt;x:Double&amp;gt;50&amp;lt;/x:Double&amp;gt;&amp;lt;/nowiki&amp;gt;. But for simple types, you can try writing them in the text format like &amp;lt;nowiki&amp;gt;&amp;lt;example:KeyValueParameter Key=&amp;quot;PropertyValue&amp;quot; Value=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/nowiki&amp;gt; and {{UBIK}} will try to find the right type.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== DisplayViewCommand ===&lt;br /&gt;
This command can be used to [[Custom_View_(Client)|display cutom views]].&lt;br /&gt;
&lt;br /&gt;
=== TeachInCommand ===&lt;br /&gt;
With the '''TeachInCommand''' you're allowed to set your device's current location (&amp;quot;teach-in&amp;quot;, &amp;quot;TeachIn&amp;quot;) as the value of the context object's [[SYSCLS_GEO|geo property]].&lt;br /&gt;
This command is available in both '''ContentViewModel''' and '''PropertyViewModel'''.&lt;br /&gt;
* ContentViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the context object's [[SYSCLS_GEO|geo property]]. Saves and commits the change;&lt;br /&gt;
* PropertyViewModel.TeachInCommand: If possible, sets the current location of the device as the value of the current property if it's a geo property (not necessarily the [[SYSCLS_GEO|geo property]]). Addtionally supports a boolean command parameter:&lt;br /&gt;
** False (default): The change is not automatically saved. &lt;br /&gt;
** True: The change is saved.&lt;br /&gt;
&amp;lt;br/&amp;gt; {{hint| Make sure you use the correct binding path for your command depending on your current context view model. E.g., if the context view model is already the ContentViewModel then your binding path should simply be TeachInCommand. You can use the [[Developer_Mode|developer mode]] to find out the current view model in a view.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UpdateArbitraryObjectCommand {{Version/WinXSince|4.6}}===&lt;br /&gt;
The &amp;quot;UpdateArbitraryObjectCommand&amp;quot; is responsible for updating an arbitrary object based on a set of provided parameters. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The available command parameters are:&lt;br /&gt;
* Uid (Mandatory): UID of the object to be updated;&lt;br /&gt;
* UpdateChildDepth (Optional): Child depth/level to update (defaults to 1);&lt;br /&gt;
* UpdateParentDepth (Optional): Parent depth/level to update (defaults to 0);&lt;br /&gt;
* UpdateIgnoreExpiry (Optional): Ignore update expiry (defaults to false); &lt;br /&gt;
&lt;br /&gt;
{{Hint|Note that if you set the UpdateChildDepth property to &amp;quot;-1&amp;quot; you are also able to update a whole branch with this command.}}&lt;br /&gt;
&lt;br /&gt;
Here is an example of the command usage: &lt;br /&gt;
&amp;lt;br /&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:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding UpdateArbitraryObjectCommand}&amp;quot;&lt;br /&gt;
    Content=&amp;quot;Update Arbitrary Object&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;Uid&amp;quot; Value=&amp;quot;...valid UID...&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateChildDepth&amp;quot; Value=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateParentDepth&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;uc:KeyValueParameter Key=&amp;quot;UpdateIgnoreExpiry&amp;quot; Value=&amp;quot;true&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;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Access to an arbitrary object {{Version/WinXSince|4.6}} {{Version/XamarinSince|4.6}} ===&lt;br /&gt;
With the ObjectByUID feature it is possible to access any local arbitrary object by its UID and, for example, display a value of it.&lt;br /&gt;
It can be accessed from ContentViewModel, AuthenticationViewModel, and RootPageViewModel levels.&lt;br /&gt;
&lt;br /&gt;
To display a string of e.g. a property of an arbitrary object from ContentViewModel, AuthenticationViewModel &amp;amp; RootPageViewModel, the following syntax can be used in related XAMLs:&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;TextBlock Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
For Property Dialogs the CallingViewModel prefix is needed to access an arbitrary object:&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;TextBlock Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Label Text=&amp;quot;{Binding CallingViewModel.ObjectByUID[paste-your-uid].Properties.VisibleItems[add-your-property-name].DisplayValue}&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&lt;br /&gt;
&lt;br /&gt;
==== UI virtualization ====&lt;br /&gt;
When using the FlipView control in your XAML code, it's better to enable [https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview#ui-virtualization UI virtualization]. The difference in performance gets more obvious as the number of items in the FlipView increases. Here's how to enable it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;FlipView&lt;br /&gt;
    ...&lt;br /&gt;
    VirtualizingStackPanel.VirtualizationMode=&amp;quot;Standard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
        &amp;lt;ItemsPanelTemplate&amp;gt;&lt;br /&gt;
            &amp;lt;VirtualizingStackPanel Orientation=&amp;quot;Horizontal&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ItemsPanelTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Flipview.ItemsPanel&amp;gt;&lt;br /&gt;
&amp;lt;/FlipView&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Auto saving ====&lt;br /&gt;
Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Changes are lost when leaving the page without flipping the document first.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualizingStackPanel.VirtualizationMode offers two possibilities: Standard &amp;amp; Recycling. In case you are interested, here are their [https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.virtualizationmode?view=netframework-4.7.2 differences].&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
[[Category:XAML|XAML Tips]]&lt;br /&gt;
[[Category:Xamarin|XAML Tips]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25752</id>
		<title>Version 4.6 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25752"/>
				<updated>2024-01-10T12:27:30Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.6.? on 2024-01-?? {{key press|App Center}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.? on 2024-01-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue that caused a crash when reverting geo data in certain situations.&lt;br /&gt;
* Fixed the paste menu item not activating when copying multiple objects.&lt;br /&gt;
* (iOS) Fixed an issue where the app crashes after you move a PDF annotation.&lt;br /&gt;
* (iOS) Fixed an issue where the app crashed after deleting multiple objects on the server.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
&lt;br /&gt;
=== 4.6.6 on 2023-12-15 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the app might save an object unnecessarily (especially in offline/manual mode), leading to potential performance issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.5 on 2023-12-07 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where ink/shape annotations created with an older client are displayed completely transparent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.4 on 2023-12-06 {{key press|App Center}} ===&lt;br /&gt;
* Updated some text localization.&lt;br /&gt;
* Display property data context names for content items in the [[Developer_Mode|developer mode]].&lt;br /&gt;
* Updated the Czech and the Polish localization.&lt;br /&gt;
* UBIK can now apply preconfigured initial zoom levels when displaying PDF documents.&lt;br /&gt;
* Updated the Portuguese and the Spanish localization.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.3 on 2023-12-01 {{key press|App Center}} ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content.&lt;br /&gt;
* Fixed an Issue that prevented manually committing changes in manual mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Fixed an issue where highlight colors in the pdfViewer did not work properly.&lt;br /&gt;
* It's now possible to customize the visibility of the appbar [[Xamarin_XAML#Feature_related|Menu Button]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not in the view port of the PDF Viewer after performing a text search.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&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;
&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 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25739</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25739"/>
				<updated>2024-01-08T13:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.6.? on 2024-01-?? {{key press|App Center}} */&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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
=== 4.6.? on 2024-01-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the PDF Viewer changed its offset after zooming while searching for text&lt;br /&gt;
* Fixed an issue where the selection border of a POI remained in the UI even if it was not selected anymore.&lt;br /&gt;
* Fixed an issue where you could not click the map at the scan window position even when the scan window was disabled&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
=== 4.6.9 on 2024-01-04 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the app might save an object unnecessarily (especially in offline/manual mode), leading to potential performance issues.&lt;br /&gt;
* Fixed an issue that caused a crash when reverting geo data in certain situations.&lt;br /&gt;
* Fixed an issue where PDF annotations slightly change their opacity when (de)selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.8 on 2023-12-11 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the text field of text annotations didn't focus automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.7 on 2023-12-07 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where ink/shape annotations created with an older client are displayed completely transparent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.6 on 2023-12-06 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK can now apply preconfigured initial zoom levels when displaying PDF documents.&lt;br /&gt;
* Updated the Portuguese and the Spanish localization.&lt;br /&gt;
* Changed the default PDF renderer setting from Syncfusion to PDFium (an earlier issue is solved).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.3 on 2023-12-05 {{key press|App Center}}  ===&lt;br /&gt;
* Updated the Czech and the Polish localization.&lt;br /&gt;
* Enabled opacity on PDF shape annotations.&lt;br /&gt;
* Changed the default PDF renderer setting from PDFium back to Syncfusion due to compatibility issues on certain devices (e.g. Surface Pro).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-12-04 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content.&lt;br /&gt;
* Fixed an Issue that prevented manually committing changes in manual mode.&lt;br /&gt;
* Fixed an issue where the opacity of PDF ink annotations is messed up (completely transparent).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View when flipping the page, see [[XAML_Tips#Auto_saving|here]].&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Updated the color palette for PDF Annotations.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Added [[Settings#Content|a new PDF renderer option (PDFium)]] to solve some text rendering issue on certain documents.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* FlipView AutoSave Annotations: Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView. But, changes are lost when leaving the page without flipping the document first. &lt;br /&gt;
* During PDF annotating/hotspotting, changes are lost if you leave the page without deselecting the changed annotation/hotspot.&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View when flipping the page, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;. Attention: Changes are lost when leaving the page without flipping the document first.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25736</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25736"/>
				<updated>2024-01-08T08:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
=== 4.6.? on 2024-01-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the PDF Viewer changed its offset after zooming while searching for text&lt;br /&gt;
&lt;br /&gt;
=== 4.6.9 on 2024-01-04 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the app might save an object unnecessarily (especially in offline/manual mode), leading to potential performance issues.&lt;br /&gt;
* Fixed an issue that caused a crash when reverting geo data in certain situations.&lt;br /&gt;
* Fixed an issue where PDF annotations slightly change their opacity when (de)selected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.8 on 2023-12-11 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the text field of text annotations didn't focus automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.7 on 2023-12-07 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where ink/shape annotations created with an older client are displayed completely transparent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.6 on 2023-12-06 {{key press|App Center}}  ===&lt;br /&gt;
* UBIK can now apply preconfigured initial zoom levels when displaying PDF documents.&lt;br /&gt;
* Updated the Portuguese and the Spanish localization.&lt;br /&gt;
* Changed the default PDF renderer setting from Syncfusion to PDFium (an earlier issue is solved).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.3 on 2023-12-05 {{key press|App Center}}  ===&lt;br /&gt;
* Updated the Czech and the Polish localization.&lt;br /&gt;
* Enabled opacity on PDF shape annotations.&lt;br /&gt;
* Changed the default PDF renderer setting from PDFium back to Syncfusion due to compatibility issues on certain devices (e.g. Surface Pro).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-12-04 {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content.&lt;br /&gt;
* Fixed an Issue that prevented manually committing changes in manual mode.&lt;br /&gt;
* Fixed an issue where the opacity of PDF ink annotations is messed up (completely transparent).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View when flipping the page, see [[XAML_Tips#Auto_saving|here]].&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Updated the color palette for PDF Annotations.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Added [[Settings#Content|a new PDF renderer option (PDFium)]] to solve some text rendering issue on certain documents.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* FlipView AutoSave Annotations: Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView. But, changes are lost when leaving the page without flipping the document first. &lt;br /&gt;
* During PDF annotating/hotspotting, changes are lost if you leave the page without deselecting the changed annotation/hotspot.&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View when flipping the page, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;. Attention: Changes are lost when leaving the page without flipping the document first.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=HowTo:Integrate_UBIK_in_an_SSO_Environment&amp;diff=25724</id>
		<title>HowTo:Integrate UBIK in an SSO Environment</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=HowTo:Integrate_UBIK_in_an_SSO_Environment&amp;diff=25724"/>
				<updated>2023-12-21T15:34:47Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Single_Sign-On|Single Sign-On (SSO)]] allows an end-user to interact with multiple services without logging in more than once. &lt;br /&gt;
&lt;br /&gt;
This page shows how to integrate {{UBIK}} into such an SSO environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/Begin}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The customer's Identity Provider must know {{UBIK}} as a Service Provider. &lt;br /&gt;
In case of SAML, we need to provide an SSO mediator server in order to relay SAML responses for the client; this is our ACS (Assertion Consumer Service). In case of OIDC, the client app interacts with the OIDC provider directly.&lt;br /&gt;
&lt;br /&gt;
There are two major use-cases for SSO:&lt;br /&gt;
* Authentication: Establishing or re-using an SSO session with an external authority (logging in)&lt;br /&gt;
* Authorization: Interaction with external systems (interfacing)&lt;br /&gt;
&lt;br /&gt;
In order to configure {{UBIK}} for SSO integration, we need to address both.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
* In the {{UBIK}} client profile, adjust the SSO relevant settings (enabling SSO and specifying the Identity Provider Endpoint URL for an IdP-initiated flow).&lt;br /&gt;
* On the server side, make sure that an SSO Processor is configured able to process the responses from the Identity Provider.&lt;br /&gt;
&lt;br /&gt;
== Authorization ==&lt;br /&gt;
When a {{UBIK}} object is synchronized between client and server, the {{UBIK}} customizing can interact with external systems. There, we might require authorization, and we need to make sure the client provides a respective token. In order to do so, we have to identify the specific authorization use-cases:&lt;br /&gt;
* For which types of objects (meta classes) do I need to interact with external systems, requiring SSO authorization?&lt;br /&gt;
* For which synchronization operations (e.g., update, commit, create, etc.) do I need authorization?&lt;br /&gt;
* Which SSO client configurations (identity provider base URL, scopes, etc.) are used in this case?&lt;br /&gt;
For each resulting combination we have to create an [[SYSCLS_EXTERNALAUTHCONFIG|External Auth Config]] object and give it to the client in the infrastructure list.&lt;br /&gt;
&lt;br /&gt;
Further, we have to make sure the authorization tokens can be transported to the server. Therefore, add the [[SYSCLS_EXTERNALENTITY|External Entity Classification]] to all meta classes of objects that need external authorization.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Studio =&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
* Install the Auth Processor plugin (SAMLProcessor or OIDCProcessor plugin) in your web service's injection folder&lt;br /&gt;
* Customize your UBIK Context, overriding the method &amp;quot;GetSSOProcessor&amp;quot; so it returns an instance of the authentication processor:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OIDC:'''&lt;br /&gt;
&lt;br /&gt;
{{Version/ServerSince|4.6.0}}In the case of a periodic rolling of the signing key, use the DynamicOIDCProcessor which fetches the JWKS automatically via the base URL of the chosen OIDC Provider: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public override UBIK.Kernel.SSO.ISSOProcessor GetSSOProcessor(System.String token)&lt;br /&gt;
{&lt;br /&gt;
	if (this.Name == &amp;quot;MyContextName&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		string authorityBaseUrl = &amp;quot;...&amp;quot;;&lt;br /&gt;
		return new UBIK.SSO.OIDCProcessor.DynamicOIDCProcessorExt(Environment, token, authorityBaseUrl);&lt;br /&gt;
	}&lt;br /&gt;
	return base.GetSSOProcessor(token);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Instead of &amp;quot;...&amp;quot; you will need to insert the correct URL from your OIDC Provider where the JWKS should originate from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the JWKS does not roll periodically:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public override UBIK.Kernel.SSO.ISSOProcessor GetSSOProcessor(System.String token)&lt;br /&gt;
{&lt;br /&gt;
	if (this.Name == &amp;quot;MyContextName&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		string jwks = &amp;quot;...&amp;quot;;&lt;br /&gt;
		return new UBIK.SSO.OIDCProcessor.OIDCProcessorExt(Environment, token, jwks);&lt;br /&gt;
	}&lt;br /&gt;
	return base.GetSSOProcessor(token);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You will need to insert the correct jwks from your OIDC Provider instead of &amp;quot;...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SAML:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public override UBIK.Kernel.SSO.ISSOProcessor GetSSOProcessor(System.String token)&lt;br /&gt;
{&lt;br /&gt;
	if (this.Name == &amp;quot;MyContextName&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		byte[] certificate= null; // load from file&lt;br /&gt;
		return new UBIK.SSO.SAMLProcessor.SAMLProcessorExt(Environment, token, certificate);&lt;br /&gt;
	}&lt;br /&gt;
	return base.GetSSOProcessor(token);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You will need to load the correct certificate from your SAML Identity Provider instead of null. It's recommended to save the certificate on the server and load it from file storage. The certificate must be the one the IdP uses to sign its SAML responses with.&lt;br /&gt;
&lt;br /&gt;
== Authorization ==&lt;br /&gt;
* Add [[SYSCLS_EXTERNALAUTHCONFIG|External Auth Config]] objects to the client's infrastructure &lt;br /&gt;
* Add the [[SYSCLS_EXTERNALENTITY|External Entity Classification]] to all affected meta class scopes&lt;br /&gt;
&lt;br /&gt;
An external auth config object specifies for which meta class and sync action (e.g., when uploading instruction documents), which SSO configuration should be used. The result of a correct configuration will be, that the client sends an SSO token to the server when performing the sync action for an instance of the meta class. On the server side, you can use that token to interact with the external system. This only works if there is a scope with the external entity classification for that meta class, because it provides the means to transport the token.&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:SSO|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:Version 3.6|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
&lt;br /&gt;
= Client =&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OIDC ==&lt;br /&gt;
&lt;br /&gt;
* Set up an identity provider if necessary&lt;br /&gt;
* Assemble a client configuration JSON string, .e.g.:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
      {'AuthorityURL' : 'https://oidc.example-provider.net', &lt;br /&gt;
      'ClientID' : 'ubik', &lt;br /&gt;
      'ClientSecret' : null, &lt;br /&gt;
      'RedirectURL' : 'com.augmensys.ubik://SSO',&lt;br /&gt;
      'Scope' : 'openid',&lt;br /&gt;
      'UseAccessToken' : 'false'}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Integrate client configuration in profile:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;InternalSSOSettings&amp;gt;&lt;br /&gt;
    &amp;lt;EnableSSO&amp;gt;true&amp;lt;/EnableSSO&amp;gt;   &lt;br /&gt;
    &amp;lt;SSOConfiguration&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    &amp;lt;/SSOConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;SSOProtocol&amp;gt;OIDC&amp;lt;/SSOProtocol&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalSSOSettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SAML ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Set up an identity provider if necessary&lt;br /&gt;
* Set up an SSO mediator backend server to relay SSO responses to the client&lt;br /&gt;
&lt;br /&gt;
To set up an Authentication Mediator Server first go to http://release.augmensys.com/ and download the provided Zip File.&lt;br /&gt;
After you downloaded the Zip create a new IIS applicatio (https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/application/).&lt;br /&gt;
Open the just created app in your file explorer, unpack the downloaded ZIP file and copy all files of that ZIP into the app-folder.&lt;br /&gt;
If IIS prohibites you to copy files you need to first stop the server. After successfully copying the Files you need to Restart/Start the IIS server again.&lt;br /&gt;
Now you have set up the Authentication-Backend and it is ready to use.&lt;br /&gt;
&lt;br /&gt;
* Assemble a client configuration JSON string, .e.g.:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;AuthUser&amp;quot;: &amp;quot;user&amp;quot;, &amp;quot;AuthUserPw&amp;quot;: &amp;quot;test&amp;quot;, &amp;quot;BackendURL&amp;quot;: &amp;quot;https://ubik.test.com/UBIK/DEV/AUTH_SERVICE/&amp;quot;, &amp;quot;IdpURL&amp;quot;: &amp;quot;https://idp.com/idpssoinit?metaAlias=ubik;spEntityID=ubik&amp;quot;, &amp;quot;IdpLogoutURL&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;IsPivotEnabled&amp;quot;: false, &amp;quot;Env_Broadcast&amp;quot; : null, &amp;quot;Env_Data&amp;quot;: null}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Integrate client configuration in profile:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;InternalSSOSettings&amp;gt;&lt;br /&gt;
    &amp;lt;EnableSSO&amp;gt;true&amp;lt;/EnableSSO&amp;gt;   &lt;br /&gt;
    &amp;lt;SSOConfiguration&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    &amp;lt;/SSOConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;SSOProtocol&amp;gt;SAML&amp;lt;/SSOProtocol&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalSSOSettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/End}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
* [[Single_Sign-On]]&lt;br /&gt;
* [[SYSCLS_EXTERNALAUTHCONFIG|External Auth Config Classification (SSO)]]&lt;br /&gt;
* [[SYSCLS_EXTERNALENTITY|External Entity Classification (SSO)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:SSO|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:Version 3.6|Integrate UBIK in an SSO Environment]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=HowTo:Integrate_UBIK_in_an_SSO_Environment&amp;diff=25723</id>
		<title>HowTo:Integrate UBIK in an SSO Environment</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=HowTo:Integrate_UBIK_in_an_SSO_Environment&amp;diff=25723"/>
				<updated>2023-12-21T15:28:08Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Single_Sign-On|Single Sign-On (SSO)]] allows an end-user to interact with multiple services without logging in more than once. &lt;br /&gt;
&lt;br /&gt;
This page shows how to integrate {{UBIK}} into such an SSO environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/Begin}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The customer's Identity Provider must know {{UBIK}} as a Service Provider. &lt;br /&gt;
In case of SAML, we need to provide an SSO mediator server in order to relay SAML responses for the client; this is our ACS (Assertion Consumer Service). In case of OIDC, the client app interacts with the OIDC provider directly.&lt;br /&gt;
&lt;br /&gt;
There are two major use-cases for SSO:&lt;br /&gt;
* Authentication: Establishing or re-using an SSO session with an external authority (logging in)&lt;br /&gt;
* Authorization: Interaction with external systems (interfacing)&lt;br /&gt;
&lt;br /&gt;
In order to configure {{UBIK}} for SSO integration, we need to address both.&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
* In the {{UBIK}} client profile, adjust the SSO relevant settings (enabling SSO and specifying the Identity Provider Endpoint URL for an IdP-initiated flow).&lt;br /&gt;
* On the server side, make sure that an SSO Processor is configured able to process the responses from the Identity Provider.&lt;br /&gt;
&lt;br /&gt;
== Authorization ==&lt;br /&gt;
When a {{UBIK}} object is synchronized between client and server, the {{UBIK}} customizing can interact with external systems. There, we might require authorization, and we need to make sure the client provides a respective token. In order to do so, we have to identify the specific authorization use-cases:&lt;br /&gt;
* For which types of objects (meta classes) do I need to interact with external systems, requiring SSO authorization?&lt;br /&gt;
* For which synchronization operations (e.g., update, commit, create, etc.) do I need authorization?&lt;br /&gt;
* Which SSO client configurations (identity provider base URL, scopes, etc.) are used in this case?&lt;br /&gt;
For each resulting combination we have to create an [[SYSCLS_EXTERNALAUTHCONFIG|External Auth Config]] object and give it to the client in the infrastructure list.&lt;br /&gt;
&lt;br /&gt;
Further, we have to make sure the authorization tokens can be transported to the server. Therefore, add the [[SYSCLS_EXTERNALENTITY|External Entity Classification]] to all meta classes of objects that need external authorization.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Studio =&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
* Install the Auth Processor plugin (SAMLProcessor or OIDCProcessor plugin) in your web service's injection folder&lt;br /&gt;
* Customize your UBIK Context, overriding the method &amp;quot;GetSSOProcessor&amp;quot; so it returns an instance of the authentication processor:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OIDC:'''&lt;br /&gt;
&lt;br /&gt;
In the case of a periodic rolling of the signing key, use the DynamicOIDCProcessor which fetches the JWKS automatically via the base URL of the chosen OIDC Provider: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public override UBIK.Kernel.SSO.ISSOProcessor GetSSOProcessor(System.String token)&lt;br /&gt;
{&lt;br /&gt;
	if (this.Name == &amp;quot;MyContextName&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		string authorityBaseUrl = &amp;quot;...&amp;quot;;&lt;br /&gt;
		return new UBIK.SSO.OIDCProcessor.DynamicOIDCProcessorExt(Environment, token, authorityBaseUrl);&lt;br /&gt;
	}&lt;br /&gt;
	return base.GetSSOProcessor(token);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Instead of &amp;quot;...&amp;quot; you will need to insert the correct URL from your OIDC Provider where the JWKS should originate from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the JWKS does not roll periodically:  &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public override UBIK.Kernel.SSO.ISSOProcessor GetSSOProcessor(System.String token)&lt;br /&gt;
{&lt;br /&gt;
	if (this.Name == &amp;quot;MyContextName&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		string jwks = &amp;quot;...&amp;quot;;&lt;br /&gt;
		return new UBIK.SSO.OIDCProcessor.OIDCProcessorExt(Environment, token, jwks);&lt;br /&gt;
	}&lt;br /&gt;
	return base.GetSSOProcessor(token);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You will need to insert the correct jwks from your OIDC Provider instead of &amp;quot;...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SAML:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
public override UBIK.Kernel.SSO.ISSOProcessor GetSSOProcessor(System.String token)&lt;br /&gt;
{&lt;br /&gt;
	if (this.Name == &amp;quot;MyContextName&amp;quot;)&lt;br /&gt;
	{&lt;br /&gt;
		byte[] certificate= null; // load from file&lt;br /&gt;
		return new UBIK.SSO.SAMLProcessor.SAMLProcessorExt(Environment, token, certificate);&lt;br /&gt;
	}&lt;br /&gt;
	return base.GetSSOProcessor(token);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You will need to load the correct certificate from your SAML Identity Provider instead of null. It's recommended to save the certificate on the server and load it from file storage. The certificate must be the one the IdP uses to sign its SAML responses with.&lt;br /&gt;
&lt;br /&gt;
== Authorization ==&lt;br /&gt;
* Add [[SYSCLS_EXTERNALAUTHCONFIG|External Auth Config]] objects to the client's infrastructure &lt;br /&gt;
* Add the [[SYSCLS_EXTERNALENTITY|External Entity Classification]] to all affected meta class scopes&lt;br /&gt;
&lt;br /&gt;
An external auth config object specifies for which meta class and sync action (e.g., when uploading instruction documents), which SSO configuration should be used. The result of a correct configuration will be, that the client sends an SSO token to the server when performing the sync action for an instance of the meta class. On the server side, you can use that token to interact with the external system. This only works if there is a scope with the external entity classification for that meta class, because it provides the means to transport the token.&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:SSO|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:Version 3.6|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
&lt;br /&gt;
= Client =&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OIDC ==&lt;br /&gt;
&lt;br /&gt;
* Set up an identity provider if necessary&lt;br /&gt;
* Assemble a client configuration JSON string, .e.g.:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
      {'AuthorityURL' : 'https://oidc.example-provider.net', &lt;br /&gt;
      'ClientID' : 'ubik', &lt;br /&gt;
      'ClientSecret' : null, &lt;br /&gt;
      'RedirectURL' : 'com.augmensys.ubik://SSO',&lt;br /&gt;
      'Scope' : 'openid',&lt;br /&gt;
      'UseAccessToken' : 'false'}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Integrate client configuration in profile:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;InternalSSOSettings&amp;gt;&lt;br /&gt;
    &amp;lt;EnableSSO&amp;gt;true&amp;lt;/EnableSSO&amp;gt;   &lt;br /&gt;
    &amp;lt;SSOConfiguration&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    &amp;lt;/SSOConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;SSOProtocol&amp;gt;OIDC&amp;lt;/SSOProtocol&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalSSOSettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SAML ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Set up an identity provider if necessary&lt;br /&gt;
* Set up an SSO mediator backend server to relay SSO responses to the client&lt;br /&gt;
&lt;br /&gt;
To set up an Authentication Mediator Server first go to http://release.augmensys.com/ and download the provided Zip File.&lt;br /&gt;
After you downloaded the Zip create a new IIS applicatio (https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/application/).&lt;br /&gt;
Open the just created app in your file explorer, unpack the downloaded ZIP file and copy all files of that ZIP into the app-folder.&lt;br /&gt;
If IIS prohibites you to copy files you need to first stop the server. After successfully copying the Files you need to Restart/Start the IIS server again.&lt;br /&gt;
Now you have set up the Authentication-Backend and it is ready to use.&lt;br /&gt;
&lt;br /&gt;
* Assemble a client configuration JSON string, .e.g.:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;AuthUser&amp;quot;: &amp;quot;user&amp;quot;, &amp;quot;AuthUserPw&amp;quot;: &amp;quot;test&amp;quot;, &amp;quot;BackendURL&amp;quot;: &amp;quot;https://ubik.test.com/UBIK/DEV/AUTH_SERVICE/&amp;quot;, &amp;quot;IdpURL&amp;quot;: &amp;quot;https://idp.com/idpssoinit?metaAlias=ubik;spEntityID=ubik&amp;quot;, &amp;quot;IdpLogoutURL&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;IsPivotEnabled&amp;quot;: false, &amp;quot;Env_Broadcast&amp;quot; : null, &amp;quot;Env_Data&amp;quot;: null}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Integrate client configuration in profile:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;InternalSSOSettings&amp;gt;&lt;br /&gt;
    &amp;lt;EnableSSO&amp;gt;true&amp;lt;/EnableSSO&amp;gt;   &lt;br /&gt;
    &amp;lt;SSOConfiguration&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
    &amp;lt;/SSOConfiguration&amp;gt;&lt;br /&gt;
    &amp;lt;SSOProtocol&amp;gt;SAML&amp;lt;/SSOProtocol&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalSSOSettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;{{Template:HowTo/End}}&amp;lt;!-- DO NOT REMOVE THIS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;!-- DO NOT MODIFY THE NAME OF THIS SECTION, BUT REMOVE IT IF NOT REQUIRED --&amp;gt;&lt;br /&gt;
* [[Single_Sign-On]]&lt;br /&gt;
* [[SYSCLS_EXTERNALAUTHCONFIG|External Auth Config Classification (SSO)]]&lt;br /&gt;
* [[SYSCLS_EXTERNALENTITY|External Entity Classification (SSO)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:How-To|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:SSO|Integrate UBIK in an SSO Environment]]&lt;br /&gt;
[[Category:Version 3.6|Integrate UBIK in an SSO Environment]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25660</id>
		<title>Version 4.6 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25660"/>
				<updated>2023-12-01T10:51:22Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Preview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Fixed an issue where highlight colors in the pdfViewer did not work properly.&lt;br /&gt;
* It's now possible to customize the visibility of the appbar [[Xamarin_XAML#Feature_related|Menu Button]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not in the view port of the PDF Viewer after performing a text search.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&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 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25659</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25659"/>
				<updated>2023-12-01T10:50:46Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
=== 4.6.? on 2023-12-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content.&lt;br /&gt;
=== 4.6.1 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View when flipping the page, see [[XAML_Tips#Auto_saving|here]].&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Updated the color palette for PDF Annotations.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Added [[Settings#Content|a new PDF renderer option (PDFium)]] to solve some text rendering issue on certain documents.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* FlipView AutoSave Annotations: Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView. But, changes are lost when leaving the page without flipping the document first. &lt;br /&gt;
* During PDF annotating/hotspotting, changes are lost if you leave the page without deselecting the changed annotation/hotspot.&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View when flipping the page, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;. Attention: Changes are lost when leaving the page without flipping the document first.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25658</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25658"/>
				<updated>2023-12-01T10:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
=== 4.6.? on 2023-12-?? {{key press|App Center}}  ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content&lt;br /&gt;
=== 4.6.1 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View when flipping the page, see [[XAML_Tips#Auto_saving|here]].&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Updated the color palette for PDF Annotations.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Added [[Settings#Content|a new PDF renderer option (PDFium)]] to solve some text rendering issue on certain documents.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* FlipView AutoSave Annotations: Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView. But, changes are lost when leaving the page without flipping the document first. &lt;br /&gt;
* During PDF annotating/hotspotting, changes are lost if you leave the page without deselecting the changed annotation/hotspot.&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View when flipping the page, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;. Attention: Changes are lost when leaving the page without flipping the document first.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25657</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25657"/>
				<updated>2023-12-01T10:49:04Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
=== 4.6.? on 2023-12-??  ===&lt;br /&gt;
* Fixed an issue where the branch download was enabled for uncommitted content&lt;br /&gt;
=== 4.6.1 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View when flipping the page, see [[XAML_Tips#Auto_saving|here]].&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Updated the color palette for PDF Annotations.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Added [[Settings#Content|a new PDF renderer option (PDFium)]] to solve some text rendering issue on certain documents.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* FlipView AutoSave Annotations: Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView. But, changes are lost when leaving the page without flipping the document first. &lt;br /&gt;
* During PDF annotating/hotspotting, changes are lost if you leave the page without deselecting the changed annotation/hotspot.&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View when flipping the page, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;. Attention: Changes are lost when leaving the page without flipping the document first.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25656</id>
		<title>Version 4.6 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25656"/>
				<updated>2023-12-01T09:02:38Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Fixed an issue where highlight colors in the pdfViewer did not work properly&lt;br /&gt;
* It's now possible to customize the visibility of the appbar [[Xamarin_XAML#Feature_related|Menu Button]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not in the view port of the PDF Viewer after performing a text search&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&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 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25646</id>
		<title>Version 4.6 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25646"/>
				<updated>2023-11-30T08:13:38Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.2 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Fixed an issue where highlight colors in the pdfViewer did not work properly&lt;br /&gt;
* It's now possible to customize the visibility of the appbar [[Xamarin_XAML#Feature_related|Menu Button]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, objects shift their positions in the lists after being edited. We found out that this is related to the 3rd party list control we use and are considering replacing it. However, this will take some more time in order to make all features we build around the control still function.&lt;br /&gt;
* Currently, the Samsung keyboard doesn't show {{key press|,}} at all, regardless of the current language/locale setting of the device. Please use a different virtual keyboard (e.g. Gboard from Google) instead if {{key press|.}} is unacceptable.&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 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25645</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25645"/>
				<updated>2023-11-30T08:12:42Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.6.1 on 2023-11-29 {{key press|App Center}} */&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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-11-29 {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View when flipping the page, see [[XAML_Tips#Auto_saving|here]].&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
* Added an uncommitted changes indicator button leading to a list of the currently uncommitted changes if there are any.&lt;br /&gt;
* Updated the color palette for PDF Annotations.&lt;br /&gt;
* Fixed an issue that caused link properties to appear as null.&lt;br /&gt;
* Added [[Settings#Content|a new PDF renderer option (PDFium)]] to solve some text rendering issue on certain documents.&lt;br /&gt;
* Improved the UI performance when accessing properties.&lt;br /&gt;
** A new collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] is available.&lt;br /&gt;
* Fixed an issue where highlighted text was not centered in the PDF Viewer after performing a text search&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* FlipView AutoSave Annotations: Unsaved changes on the document (e.g. Annotations) are gonna be saved and committed automatically when flipping the page in the FlipView. But, changes are lost when leaving the page without flipping the document first. &lt;br /&gt;
* During PDF annotating/hotspotting, changes are lost if you leave the page without deselecting the changed annotation/hotspot.&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;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View when flipping the page, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;. Attention: Changes are lost when leaving the page without flipping the document first.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25616</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25616"/>
				<updated>2023-11-22T09:13:02Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 4.6.1 on 2023-??-?? {{key press|App Center}} */&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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-??-?? {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[Single_Sign-On|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&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;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25615</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25615"/>
				<updated>2023-11-22T09:11:47Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* 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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-??-?? {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* [[SSO#Single_Sign-On|ObjectByUID|Single sign-on ]] is now available.&lt;br /&gt;
* The default stroke width of PDFViewer Annotations can now be customized, see [[XAML#UBIKPdfViewer|UBIKPdfViewer]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&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;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;.&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;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25587</id>
		<title>Client Feature Table</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25587"/>
				<updated>2023-11-20T14:53:50Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tables provide an overview about the {{UBIK}} client features and their availability on the various platforms/clients.&lt;br /&gt;
* If there are further introductions on a feature, you can find the links in the &amp;quot;Feature&amp;quot; column and/or on the bullet points in the platform columns;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 30%; float:right; margin-left: auto; margin-right: 0px&amp;quot;&lt;br /&gt;
|+ Table Legend&lt;br /&gt;
|-&lt;br /&gt;
! Symbol !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|12px|link=]] || Supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|8px|link=]] || Supported&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|12px|link=]] || Partially supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|8px|link=]] || Partially supported&lt;br /&gt;
|-&lt;br /&gt;
| - || Not supported&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Content Browser&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Content_Browser]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Content_Browser]]&lt;br /&gt;
|| Browse data and documents&lt;br /&gt;
|-&lt;br /&gt;
| UI Customizing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=UI_Configuration]]&lt;br /&gt;
|| Customize UI using config files (e.g. XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[Developer_Mode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Utility to support UI customizing tasks&lt;br /&gt;
|-&lt;br /&gt;
| [[Deploy_UI_Customizings_(Client)|Server Side UI Distribution]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Automatically distributes UI customizings to clients&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)|MRO]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Tasks and work packages with progress calculation&lt;br /&gt;
|-&lt;br /&gt;
| Map View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| View objects on a map&lt;br /&gt;
|-&lt;br /&gt;
| POI View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| View objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[Optical_code|Optical Code Scanning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| QR-Codes, Barcodes, ID-Markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Location_Manager|Positioning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Positioning systems with pose fusion&lt;br /&gt;
|-&lt;br /&gt;
| [[Settings|Settings/Profiles/Presets]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Profiles]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Preset]]&lt;br /&gt;
|| Settings and transferable files for settings&lt;br /&gt;
|-&lt;br /&gt;
| Server Side Profile Distribution&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Managed_App_Configuration]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Preset_Service]]&lt;br /&gt;
|| Distributes profiles to clients. Xamarin.Android only.&lt;br /&gt;
|-&lt;br /&gt;
| Remote Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Navigation_Drawer]]&lt;br /&gt;
|| Video and audio calls&lt;br /&gt;
|-&lt;br /&gt;
| Free Text Search&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search]]&lt;br /&gt;
|| Find objects by free text searches&lt;br /&gt;
|-&lt;br /&gt;
| [[Deep Linking|Deep Linking]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Open/steer App through URI schemes&lt;br /&gt;
|-&lt;br /&gt;
| SSO&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Log in via single sig-on (in Xamarin only supported for Xamarin.Android)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Content Browser==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Online Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Query_Objects_(UBIK_Android)]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Offline Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Offline_Query_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Replication_(UBIK_Client)|Local Data Replication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Copy / Paste and data template based replication&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Content Tabs&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Dynamic_Content_Tabs]]&lt;br /&gt;
|| Determines tabs based on the content&lt;br /&gt;
|-&lt;br /&gt;
| Context Aware Action Menu&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Content Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Document Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| Attach files or capture media&lt;br /&gt;
|-&lt;br /&gt;
| Content Deletion&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Safety Instructions&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts which objects can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Based_Content_Filters]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Custom UI based filtering and sorting&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Icons&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Icons from [[MetaClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_SORTEDITEM|Grouping and Sorting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Direct MRO Task Editing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Task_Objects_(UBIK_Android)]]&lt;br /&gt;
|| Interact with MRO tasks without editors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MEASUREMENTTASK|Measurement Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| MRO tasks with double value type and current/previous values&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUEREPORTING|Value Reporting Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Measurement tasks with predefined value ranges&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#Sequential_Task|Sequential Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| -&lt;br /&gt;
|| Tasks that have predefined predecessors and/or successors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_STATUSCOLOR|Status Color]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Distance Display &amp;amp; Sorting&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Exclusive_Access_Content_(Client)|Exclusive Access Content]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Check out / Release content for exclusive access&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS UNLOCK BY SCAN|Unlock by Scan]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Objects get unlocked for a short period of time after scanned&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_OBJECT_WITH_ICON|Object with Custom Icon]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Icons from [[ContentClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#MRO_objects_with_project_information_.28WinX_only.29|MRO Objects with Project Info]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Gantt chart like display&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Property Priority&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Determines the sorting of properties and affect the [[Property_Wizard_(Client)|wizard creation]]&lt;br /&gt;
|-&lt;br /&gt;
| Invisible/System Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Hide properties that aren't meant for users&lt;br /&gt;
|-&lt;br /&gt;
| Sorting&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Editing&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Direct_Edit_(Client)|Direct Editing]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Inline editing instead of editors/dialogs&lt;br /&gt;
|-&lt;br /&gt;
| [[MetaProperty#Default_value|Default and Initial Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Value Records / Change Log&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_WinX_Client_Basics#Properties_with_value_records]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Logging the timestamps and users of property values changes.&lt;br /&gt;
|-&lt;br /&gt;
| Value Validity Border&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| A value interval with warning and error boundaries.&lt;br /&gt;
|-&lt;br /&gt;
| Teach-in&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_Client_Basics#Teach-in_Actions]]&lt;br /&gt;
|| Scan to input property values&lt;br /&gt;
|-&lt;br /&gt;
| [[Live_Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUE_SERIES|Value Series]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Chart data and display&lt;br /&gt;
|-&lt;br /&gt;
| Signature&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Digital hand written signatures.&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]] on Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Restricts which properties can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[UBIK_WinX_Client_Basics#Authentication_Properties|Property Authentication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Properties that are locked until authenticated&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_THUMBNAILEDFILE|Thumbnails]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_URLDOCUMENT|Link/URL Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_FILEDOCUMENT|Local Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_ANNOTATION|Annotations]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HotSpotting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_editable_on_Mobile_Client|Editing]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Editing_Documents_2]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_ready_for_Redlining|Redlining]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Redlining]]&lt;br /&gt;
|| Outdated and replaced by the annotation feature&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Online&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Different map apps on different platforms&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Offline&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| OSM, Sygic or other apps, optionally&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker Device Pose Estimation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using AR markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Beacon_Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using bluetooth beacons&lt;br /&gt;
|-&lt;br /&gt;
| [[Compass]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[GPS]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Gyroscope]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Object Proximity Positioning|Object Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses geo positions extracted from objects (scanned or selected)&lt;br /&gt;
|-&lt;br /&gt;
| [[Step Detector]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Routing-Graph Snapping]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Points of Interest==&lt;br /&gt;
&lt;br /&gt;
=== Map ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|Map Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Geo_POIs]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Create_Image_Map_Overlays|Overlays]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Overlays]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MAPSHAPE|Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| New MapsUI based feature&lt;br /&gt;
|-&lt;br /&gt;
| [[Geographies]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| UBIK proprietary solution&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Augmented Reality ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|POI Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Geo_POI]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| The same as in the map&lt;br /&gt;
|-&lt;br /&gt;
| POI Status Color&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object Identification==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|QR Code]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#QR_Code]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|Barcode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Optical_code#Types_of_optical_codes]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|ID Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| RFID&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=RFID_tags]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#RFID]]&lt;br /&gt;
|| For Xamarin, it's only supported on iOS &amp;amp; Android.&lt;br /&gt;
|-&lt;br /&gt;
| [[OCR]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ID Marker 3D&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker_3D]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Markerless Image Tracking&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Markerless]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Configurable AR Content&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Configure_Dynamic_AR_Content]]&lt;br /&gt;
|| UWP and Xamarin use a new and more flexible technique (XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker#Grouped_AR_Marker|Grouped AR Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| To overcome the number limit of available markers&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Synchronization==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Automatic Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Automatic Mode]]&lt;br /&gt;
|| Auto sync/download, auto commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Manual Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Manual Mode]]&lt;br /&gt;
|| Auto sync/download, manual commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Offline Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Offline Mode]]&lt;br /&gt;
|| No sync/download, no commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Branch Download&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Make data offline available&lt;br /&gt;
|-&lt;br /&gt;
| [[Branch_Download#Automatic_Download|Configurable Automatic Branch Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Configure data to be auto download in different manners&lt;br /&gt;
|-&lt;br /&gt;
| [[Push_Service_(Client)|Push]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Login_View#Login_details|Login Details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Delivers login details (of users) to clients&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| User Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by user&lt;br /&gt;
|-&lt;br /&gt;
| Device Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by device&lt;br /&gt;
|-&lt;br /&gt;
| Offline Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Allows offline authentications after successful online ones&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts what data can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| SSL/TLS Encrypted Communication (HTTPS)&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Secured&lt;br /&gt;
|-&lt;br /&gt;
| HTTP Communication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Unsecured&lt;br /&gt;
|-&lt;br /&gt;
| Manage Certificates&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Install_UBIK_Client_Certificate]]&lt;br /&gt;
|| Manages (server) self signed certificates in UBIK&lt;br /&gt;
|-&lt;br /&gt;
| Proxy Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses OS proxy settings during service communications&lt;br /&gt;
|-&lt;br /&gt;
| Terminate User Sessions&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Terminates {{UBIK}} service sessions upon logout or closing&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25586</id>
		<title>Client Feature Table</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25586"/>
				<updated>2023-11-20T14:52:31Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tables provide an overview about the {{UBIK}} client features and their availability on the various platforms/clients.&lt;br /&gt;
* If there are further introductions on a feature, you can find the links in the &amp;quot;Feature&amp;quot; column and/or on the bullet points in the platform columns;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 30%; float:right; margin-left: auto; margin-right: 0px&amp;quot;&lt;br /&gt;
|+ Table Legend&lt;br /&gt;
|-&lt;br /&gt;
! Symbol !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|12px|link=]] || Supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|8px|link=]] || Supported&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|12px|link=]] || Partially supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|8px|link=]] || Partially supported&lt;br /&gt;
|-&lt;br /&gt;
| - || Not supported&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Content Browser&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Content_Browser]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Content_Browser]]&lt;br /&gt;
|| Browse data and documents&lt;br /&gt;
|-&lt;br /&gt;
| UI Customizing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=UI_Configuration]]&lt;br /&gt;
|| Customize UI using config files (e.g. XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[Developer_Mode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Utility to support UI customizing tasks&lt;br /&gt;
|-&lt;br /&gt;
| [[Deploy_UI_Customizings_(Client)|Server Side UI Distribution]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Automatically distributes UI customizings to clients&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)|MRO]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Tasks and work packages with progress calculation&lt;br /&gt;
|-&lt;br /&gt;
| Map View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| View objects on a map&lt;br /&gt;
|-&lt;br /&gt;
| POI View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| View objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[Optical_code|Optical Code Scanning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| QR-Codes, Barcodes, ID-Markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Location_Manager|Positioning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Positioning systems with pose fusion&lt;br /&gt;
|-&lt;br /&gt;
| [[Settings|Settings/Profiles/Presets]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Profiles]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Preset]]&lt;br /&gt;
|| Settings and transferable files for settings&lt;br /&gt;
|-&lt;br /&gt;
| Server Side Profile Distribution&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Managed_App_Configuration]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Preset_Service]]&lt;br /&gt;
|| Distributes profiles to clients. Xamarin.Android only.&lt;br /&gt;
|-&lt;br /&gt;
| Remote Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Navigation_Drawer]]&lt;br /&gt;
|| Video and audio calls&lt;br /&gt;
|-&lt;br /&gt;
| Free Text Search&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search]]&lt;br /&gt;
|| Find objects by free text searches&lt;br /&gt;
|-&lt;br /&gt;
| [[Deep Linking|Deep Linking]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Open/steer App through URI schemes&lt;br /&gt;
|-&lt;br /&gt;
| SSO&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Log in via single sig-on (In Xamarin only supported for Xamarin.Android)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Content Browser==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Online Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Query_Objects_(UBIK_Android)]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Offline Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Offline_Query_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Replication_(UBIK_Client)|Local Data Replication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Copy / Paste and data template based replication&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Content Tabs&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Dynamic_Content_Tabs]]&lt;br /&gt;
|| Determines tabs based on the content&lt;br /&gt;
|-&lt;br /&gt;
| Context Aware Action Menu&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Content Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Document Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| Attach files or capture media&lt;br /&gt;
|-&lt;br /&gt;
| Content Deletion&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Safety Instructions&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts which objects can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Based_Content_Filters]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Custom UI based filtering and sorting&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Icons&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Icons from [[MetaClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_SORTEDITEM|Grouping and Sorting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Direct MRO Task Editing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Task_Objects_(UBIK_Android)]]&lt;br /&gt;
|| Interact with MRO tasks without editors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MEASUREMENTTASK|Measurement Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| MRO tasks with double value type and current/previous values&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUEREPORTING|Value Reporting Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Measurement tasks with predefined value ranges&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#Sequential_Task|Sequential Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| -&lt;br /&gt;
|| Tasks that have predefined predecessors and/or successors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_STATUSCOLOR|Status Color]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Distance Display &amp;amp; Sorting&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Exclusive_Access_Content_(Client)|Exclusive Access Content]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Check out / Release content for exclusive access&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS UNLOCK BY SCAN|Unlock by Scan]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Objects get unlocked for a short period of time after scanned&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_OBJECT_WITH_ICON|Object with Custom Icon]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Icons from [[ContentClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#MRO_objects_with_project_information_.28WinX_only.29|MRO Objects with Project Info]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Gantt chart like display&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Property Priority&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Determines the sorting of properties and affect the [[Property_Wizard_(Client)|wizard creation]]&lt;br /&gt;
|-&lt;br /&gt;
| Invisible/System Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Hide properties that aren't meant for users&lt;br /&gt;
|-&lt;br /&gt;
| Sorting&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Editing&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Direct_Edit_(Client)|Direct Editing]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Inline editing instead of editors/dialogs&lt;br /&gt;
|-&lt;br /&gt;
| [[MetaProperty#Default_value|Default and Initial Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Value Records / Change Log&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_WinX_Client_Basics#Properties_with_value_records]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Logging the timestamps and users of property values changes.&lt;br /&gt;
|-&lt;br /&gt;
| Value Validity Border&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| A value interval with warning and error boundaries.&lt;br /&gt;
|-&lt;br /&gt;
| Teach-in&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_Client_Basics#Teach-in_Actions]]&lt;br /&gt;
|| Scan to input property values&lt;br /&gt;
|-&lt;br /&gt;
| [[Live_Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUE_SERIES|Value Series]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Chart data and display&lt;br /&gt;
|-&lt;br /&gt;
| Signature&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Digital hand written signatures.&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]] on Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Restricts which properties can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[UBIK_WinX_Client_Basics#Authentication_Properties|Property Authentication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Properties that are locked until authenticated&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_THUMBNAILEDFILE|Thumbnails]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_URLDOCUMENT|Link/URL Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_FILEDOCUMENT|Local Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_ANNOTATION|Annotations]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HotSpotting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_editable_on_Mobile_Client|Editing]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Editing_Documents_2]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_ready_for_Redlining|Redlining]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Redlining]]&lt;br /&gt;
|| Outdated and replaced by the annotation feature&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Online&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Different map apps on different platforms&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Offline&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| OSM, Sygic or other apps, optionally&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker Device Pose Estimation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using AR markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Beacon_Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using bluetooth beacons&lt;br /&gt;
|-&lt;br /&gt;
| [[Compass]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[GPS]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Gyroscope]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Object Proximity Positioning|Object Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses geo positions extracted from objects (scanned or selected)&lt;br /&gt;
|-&lt;br /&gt;
| [[Step Detector]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Routing-Graph Snapping]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Points of Interest==&lt;br /&gt;
&lt;br /&gt;
=== Map ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|Map Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Geo_POIs]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Create_Image_Map_Overlays|Overlays]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Overlays]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MAPSHAPE|Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| New MapsUI based feature&lt;br /&gt;
|-&lt;br /&gt;
| [[Geographies]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| UBIK proprietary solution&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Augmented Reality ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|POI Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Geo_POI]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| The same as in the map&lt;br /&gt;
|-&lt;br /&gt;
| POI Status Color&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object Identification==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|QR Code]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#QR_Code]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|Barcode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Optical_code#Types_of_optical_codes]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|ID Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| RFID&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=RFID_tags]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#RFID]]&lt;br /&gt;
|| For Xamarin, it's only supported on iOS &amp;amp; Android.&lt;br /&gt;
|-&lt;br /&gt;
| [[OCR]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ID Marker 3D&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker_3D]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Markerless Image Tracking&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Markerless]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Configurable AR Content&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Configure_Dynamic_AR_Content]]&lt;br /&gt;
|| UWP and Xamarin use a new and more flexible technique (XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker#Grouped_AR_Marker|Grouped AR Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| To overcome the number limit of available markers&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Synchronization==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Automatic Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Automatic Mode]]&lt;br /&gt;
|| Auto sync/download, auto commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Manual Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Manual Mode]]&lt;br /&gt;
|| Auto sync/download, manual commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Offline Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Offline Mode]]&lt;br /&gt;
|| No sync/download, no commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Branch Download&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Make data offline available&lt;br /&gt;
|-&lt;br /&gt;
| [[Branch_Download#Automatic_Download|Configurable Automatic Branch Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Configure data to be auto download in different manners&lt;br /&gt;
|-&lt;br /&gt;
| [[Push_Service_(Client)|Push]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Login_View#Login_details|Login Details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Delivers login details (of users) to clients&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| User Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by user&lt;br /&gt;
|-&lt;br /&gt;
| Device Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by device&lt;br /&gt;
|-&lt;br /&gt;
| Offline Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Allows offline authentications after successful online ones&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts what data can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| SSL/TLS Encrypted Communication (HTTPS)&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Secured&lt;br /&gt;
|-&lt;br /&gt;
| HTTP Communication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Unsecured&lt;br /&gt;
|-&lt;br /&gt;
| Manage Certificates&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Install_UBIK_Client_Certificate]]&lt;br /&gt;
|| Manages (server) self signed certificates in UBIK&lt;br /&gt;
|-&lt;br /&gt;
| Proxy Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses OS proxy settings during service communications&lt;br /&gt;
|-&lt;br /&gt;
| Terminate User Sessions&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Terminates {{UBIK}} service sessions upon logout or closing&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25585</id>
		<title>Client Feature Table</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25585"/>
				<updated>2023-11-20T14:43:45Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tables provide an overview about the {{UBIK}} client features and their availability on the various platforms/clients.&lt;br /&gt;
* If there are further introductions on a feature, you can find the links in the &amp;quot;Feature&amp;quot; column and/or on the bullet points in the platform columns;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 30%; float:right; margin-left: auto; margin-right: 0px&amp;quot;&lt;br /&gt;
|+ Table Legend&lt;br /&gt;
|-&lt;br /&gt;
! Symbol !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|12px|link=]] || Supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|8px|link=]] || Supported&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|12px|link=]] || Partially supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|8px|link=]] || Partially supported&lt;br /&gt;
|-&lt;br /&gt;
| - || Not supported&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Content Browser&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Content_Browser]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Content_Browser]]&lt;br /&gt;
|| Browse data and documents&lt;br /&gt;
|-&lt;br /&gt;
| UI Customizing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=UI_Configuration]]&lt;br /&gt;
|| Customize UI using config files (e.g. XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[Developer_Mode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Utility to support UI customizing tasks&lt;br /&gt;
|-&lt;br /&gt;
| [[Deploy_UI_Customizings_(Client)|Server Side UI Distribution]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Automatically distributes UI customizings to clients&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)|MRO]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Tasks and work packages with progress calculation&lt;br /&gt;
|-&lt;br /&gt;
| Map View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| View objects on a map&lt;br /&gt;
|-&lt;br /&gt;
| POI View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| View objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[Optical_code|Optical Code Scanning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| QR-Codes, Barcodes, ID-Markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Location_Manager|Positioning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Positioning systems with pose fusion&lt;br /&gt;
|-&lt;br /&gt;
| [[Settings|Settings/Profiles/Presets]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Profiles]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Preset]]&lt;br /&gt;
|| Settings and transferable files for settings&lt;br /&gt;
|-&lt;br /&gt;
| Server Side Profile Distribution&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Managed_App_Configuration]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Preset_Service]]&lt;br /&gt;
|| Distributes profiles to clients. Xamarin.Android only.&lt;br /&gt;
|-&lt;br /&gt;
| Remote Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Navigation_Drawer]]&lt;br /&gt;
|| Video and audio calls&lt;br /&gt;
|-&lt;br /&gt;
| Free Text Search&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search]]&lt;br /&gt;
|| Find objects by free text searches&lt;br /&gt;
|-&lt;br /&gt;
| [[Deep Linking|Deep Linking]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Open/steer App through URI schemes&lt;br /&gt;
|-&lt;br /&gt;
| SSO&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Log in via single sig-on&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Content Browser==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Online Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Query_Objects_(UBIK_Android)]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Offline Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Offline_Query_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Replication_(UBIK_Client)|Local Data Replication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Copy / Paste and data template based replication&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Content Tabs&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Dynamic_Content_Tabs]]&lt;br /&gt;
|| Determines tabs based on the content&lt;br /&gt;
|-&lt;br /&gt;
| Context Aware Action Menu&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Content Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Document Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| Attach files or capture media&lt;br /&gt;
|-&lt;br /&gt;
| Content Deletion&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Safety Instructions&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts which objects can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Based_Content_Filters]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Custom UI based filtering and sorting&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Icons&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Icons from [[MetaClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_SORTEDITEM|Grouping and Sorting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Direct MRO Task Editing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Task_Objects_(UBIK_Android)]]&lt;br /&gt;
|| Interact with MRO tasks without editors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MEASUREMENTTASK|Measurement Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| MRO tasks with double value type and current/previous values&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUEREPORTING|Value Reporting Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Measurement tasks with predefined value ranges&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#Sequential_Task|Sequential Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| -&lt;br /&gt;
|| Tasks that have predefined predecessors and/or successors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_STATUSCOLOR|Status Color]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Distance Display &amp;amp; Sorting&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Exclusive_Access_Content_(Client)|Exclusive Access Content]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Check out / Release content for exclusive access&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS UNLOCK BY SCAN|Unlock by Scan]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Objects get unlocked for a short period of time after scanned&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_OBJECT_WITH_ICON|Object with Custom Icon]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Icons from [[ContentClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#MRO_objects_with_project_information_.28WinX_only.29|MRO Objects with Project Info]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Gantt chart like display&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Property Priority&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Determines the sorting of properties and affect the [[Property_Wizard_(Client)|wizard creation]]&lt;br /&gt;
|-&lt;br /&gt;
| Invisible/System Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Hide properties that aren't meant for users&lt;br /&gt;
|-&lt;br /&gt;
| Sorting&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Editing&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Direct_Edit_(Client)|Direct Editing]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Inline editing instead of editors/dialogs&lt;br /&gt;
|-&lt;br /&gt;
| [[MetaProperty#Default_value|Default and Initial Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Value Records / Change Log&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_WinX_Client_Basics#Properties_with_value_records]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Logging the timestamps and users of property values changes.&lt;br /&gt;
|-&lt;br /&gt;
| Value Validity Border&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| A value interval with warning and error boundaries.&lt;br /&gt;
|-&lt;br /&gt;
| Teach-in&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_Client_Basics#Teach-in_Actions]]&lt;br /&gt;
|| Scan to input property values&lt;br /&gt;
|-&lt;br /&gt;
| [[Live_Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUE_SERIES|Value Series]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Chart data and display&lt;br /&gt;
|-&lt;br /&gt;
| Signature&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Digital hand written signatures.&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]] on Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Restricts which properties can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[UBIK_WinX_Client_Basics#Authentication_Properties|Property Authentication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Properties that are locked until authenticated&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_THUMBNAILEDFILE|Thumbnails]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_URLDOCUMENT|Link/URL Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_FILEDOCUMENT|Local Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_ANNOTATION|Annotations]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HotSpotting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_editable_on_Mobile_Client|Editing]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Editing_Documents_2]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_ready_for_Redlining|Redlining]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Redlining]]&lt;br /&gt;
|| Outdated and replaced by the annotation feature&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Online&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Different map apps on different platforms&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Offline&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| OSM, Sygic or other apps, optionally&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker Device Pose Estimation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using AR markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Beacon_Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using bluetooth beacons&lt;br /&gt;
|-&lt;br /&gt;
| [[Compass]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[GPS]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Gyroscope]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Object Proximity Positioning|Object Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses geo positions extracted from objects (scanned or selected)&lt;br /&gt;
|-&lt;br /&gt;
| [[Step Detector]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Routing-Graph Snapping]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Points of Interest==&lt;br /&gt;
&lt;br /&gt;
=== Map ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|Map Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Geo_POIs]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Create_Image_Map_Overlays|Overlays]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Overlays]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MAPSHAPE|Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| New MapsUI based feature&lt;br /&gt;
|-&lt;br /&gt;
| [[Geographies]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| UBIK proprietary solution&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Augmented Reality ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|POI Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Geo_POI]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| The same as in the map&lt;br /&gt;
|-&lt;br /&gt;
| POI Status Color&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object Identification==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|QR Code]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#QR_Code]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|Barcode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Optical_code#Types_of_optical_codes]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|ID Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| RFID&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=RFID_tags]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#RFID]]&lt;br /&gt;
|| For Xamarin, it's only supported on iOS &amp;amp; Android.&lt;br /&gt;
|-&lt;br /&gt;
| [[OCR]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ID Marker 3D&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker_3D]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Markerless Image Tracking&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Markerless]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Configurable AR Content&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Configure_Dynamic_AR_Content]]&lt;br /&gt;
|| UWP and Xamarin use a new and more flexible technique (XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker#Grouped_AR_Marker|Grouped AR Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| To overcome the number limit of available markers&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Synchronization==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Automatic Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Automatic Mode]]&lt;br /&gt;
|| Auto sync/download, auto commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Manual Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Manual Mode]]&lt;br /&gt;
|| Auto sync/download, manual commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Offline Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Offline Mode]]&lt;br /&gt;
|| No sync/download, no commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Branch Download&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Make data offline available&lt;br /&gt;
|-&lt;br /&gt;
| [[Branch_Download#Automatic_Download|Configurable Automatic Branch Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Configure data to be auto download in different manners&lt;br /&gt;
|-&lt;br /&gt;
| [[Push_Service_(Client)|Push]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Login_View#Login_details|Login Details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Delivers login details (of users) to clients&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| User Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by user&lt;br /&gt;
|-&lt;br /&gt;
| Device Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by device&lt;br /&gt;
|-&lt;br /&gt;
| Offline Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Allows offline authentications after successful online ones&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts what data can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| SSL/TLS Encrypted Communication (HTTPS)&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Secured&lt;br /&gt;
|-&lt;br /&gt;
| HTTP Communication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Unsecured&lt;br /&gt;
|-&lt;br /&gt;
| Manage Certificates&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Install_UBIK_Client_Certificate]]&lt;br /&gt;
|| Manages (server) self signed certificates in UBIK&lt;br /&gt;
|-&lt;br /&gt;
| Proxy Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses OS proxy settings during service communications&lt;br /&gt;
|-&lt;br /&gt;
| Terminate User Sessions&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Terminates {{UBIK}} service sessions upon logout or closing&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25584</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25584"/>
				<updated>2023-11-20T13:45:21Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-??-?? {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Single sign-on is now available. &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;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25583</id>
		<title>Version 4.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(WinX)&amp;diff=25583"/>
				<updated>2023-11-20T13:44:46Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &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}}: Publicly available in Microsoft Store as beta versions to those whose account email is included in our beta program. Please contact the Augmensys staff and submit your chosen email address if you would like to join.&lt;br /&gt;
&lt;br /&gt;
{{key press|App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-??-?? {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* Annotations are now automatically saved in the Flip View.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Single sign-on is now available in UBIK UWP&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;
= ⚠️ XAML Notes  =&lt;br /&gt;
&lt;br /&gt;
* UWP: To guarantee that annotations are properly saved automatically in the Flip View, the &amp;quot;AutoSave&amp;quot; property in the UBIKPdfViewer control of the UBIKDocumentFlipView.xaml needs to be set to &amp;quot;True&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Category/Version2|{{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 4.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25582</id>
		<title>Client Feature Table</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Client_Feature_Table&amp;diff=25582"/>
				<updated>2023-11-20T13:42:44Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following tables provide an overview about the {{UBIK}} client features and their availability on the various platforms/clients.&lt;br /&gt;
* If there are further introductions on a feature, you can find the links in the &amp;quot;Feature&amp;quot; column and/or on the bullet points in the platform columns;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 30%; float:right; margin-left: auto; margin-right: 0px&amp;quot;&lt;br /&gt;
|+ Table Legend&lt;br /&gt;
|-&lt;br /&gt;
! Symbol !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|12px|link=]] || Supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_Full.png|8px|link=]] || Supported&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|12px|link=]] || Partially supported and it's a link&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IC_Bullet_HalfFull.png|8px|link=]] || Partially supported&lt;br /&gt;
|-&lt;br /&gt;
| - || Not supported&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Content Browser&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Content_Browser]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Content_Browser]]&lt;br /&gt;
|| Browse data and documents&lt;br /&gt;
|-&lt;br /&gt;
| UI Customizing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=UI_Configuration]]&lt;br /&gt;
|| Customize UI using config files (e.g. XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[Developer_Mode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Utility to support UI customizing tasks&lt;br /&gt;
|-&lt;br /&gt;
| [[Deploy_UI_Customizings_(Client)|Server Side UI Distribution]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=XAML]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Xamarin_XAML]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Automatically distributes UI customizings to clients&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)|MRO]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Tasks and work packages with progress calculation&lt;br /&gt;
|-&lt;br /&gt;
| Map View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View]]&lt;br /&gt;
|| View objects on a map&lt;br /&gt;
|-&lt;br /&gt;
| POI View&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View]]&lt;br /&gt;
|| View objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[Optical_code|Optical Code Scanning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| QR-Codes, Barcodes, ID-Markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Location_Manager|Positioning]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Positioning systems with pose fusion&lt;br /&gt;
|-&lt;br /&gt;
| [[Settings|Settings/Profiles/Presets]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_WinX_Client_Basics#Profiles]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Preset]]&lt;br /&gt;
|| Settings and transferable files for settings&lt;br /&gt;
|-&lt;br /&gt;
| Server Side Profile Distribution&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Managed_App_Configuration]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Preset_Service]]&lt;br /&gt;
|| Distributes profiles to clients. Xamarin.Android only.&lt;br /&gt;
|-&lt;br /&gt;
| Remote Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Navigation_Drawer]]&lt;br /&gt;
|| Video and audio calls&lt;br /&gt;
|-&lt;br /&gt;
| Free Text Search&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Mobile_Free_Text_Search]]&lt;br /&gt;
|| Find objects by free text searches&lt;br /&gt;
|-&lt;br /&gt;
| [[Deep Linking|Deep Linking]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Open/steer App through URI schemes&lt;br /&gt;
|-&lt;br /&gt;
| SSO&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Integrate_UBIK_in_an_SSO_Environment]]&lt;br /&gt;
|| Log in via single sig-on&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Content Browser==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Online Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Query_Objects_(UBIK_Android)]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Offline Queries&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Offline_Query_(UBIK_WinX)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Data_Replication_(UBIK_Client)|Local Data Replication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Copy / Paste and data template based replication&lt;br /&gt;
|-&lt;br /&gt;
| Dynamic Content Tabs&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Dynamic_Content_Tabs]]&lt;br /&gt;
|| Determines tabs based on the content&lt;br /&gt;
|-&lt;br /&gt;
| Context Aware Action Menu&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Content Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Document Creation&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| Attach files or capture media&lt;br /&gt;
|-&lt;br /&gt;
| Content Deletion&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| Safety Instructions&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts which objects can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Based_Content_Filters]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Custom UI based filtering and sorting&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Icons&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Icons from [[MetaClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_SORTEDITEM|Grouping and Sorting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Direct MRO Task Editing&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Property_Direct_Edit_(Client)]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|12px|link=Task_Objects_(UBIK_Android)]]&lt;br /&gt;
|| Interact with MRO tasks without editors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MEASUREMENTTASK|Measurement Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| MRO tasks with double value type and current/previous values&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUEREPORTING|Value Reporting Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Measurement tasks with predefined value ranges&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#Sequential_Task|Sequential Task]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| -&lt;br /&gt;
|| Tasks that have predefined predecessors and/or successors&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_STATUSCOLOR|Status Color]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Distance Display &amp;amp; Sorting&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Exclusive_Access_Content_(Client)|Exclusive Access Content]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Check out / Release content for exclusive access&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS UNLOCK BY SCAN|Unlock by Scan]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Objects get unlocked for a short period of time after scanned&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_OBJECT_WITH_ICON|Object with Custom Icon]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Icons from [[ContentClass]]&lt;br /&gt;
|-&lt;br /&gt;
| [[MRO_Objects_(Client)#MRO_objects_with_project_information_.28WinX_only.29|MRO Objects with Project Info]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Gantt chart like display&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Property Priority&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Determines the sorting of properties and affect the [[Property_Wizard_(Client)|wizard creation]]&lt;br /&gt;
|-&lt;br /&gt;
| Invisible/System Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Hide properties that aren't meant for users&lt;br /&gt;
|-&lt;br /&gt;
| Sorting&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Editing&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Property_Direct_Edit_(Client)|Direct Editing]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Inline editing instead of editors/dialogs&lt;br /&gt;
|-&lt;br /&gt;
| [[MetaProperty#Default_value|Default and Initial Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| Value Records / Change Log&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_WinX_Client_Basics#Properties_with_value_records]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| Logging the timestamps and users of property values changes.&lt;br /&gt;
|-&lt;br /&gt;
| Value Validity Border&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| A value interval with warning and error boundaries.&lt;br /&gt;
|-&lt;br /&gt;
| Teach-in&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC Bullet Full.png|12px|link=UBIK_Client_Basics#Teach-in_Actions]]&lt;br /&gt;
|| Scan to input property values&lt;br /&gt;
|-&lt;br /&gt;
| [[Live_Values]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_VALUE_SERIES|Value Series]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Chart data and display&lt;br /&gt;
|-&lt;br /&gt;
| Signature&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Digital hand written signatures.&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]] on Properties&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Restricts which properties can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| [[UBIK_WinX_Client_Basics#Authentication_Properties|Property Authentication]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC Bullet Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Properties that are locked until authenticated&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_THUMBNAILEDFILE|Thumbnails]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_URLDOCUMENT|Link/URL Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||?&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_FILEDOCUMENT|Local Documents]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_ANNOTATION|Annotations]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HotSpotting]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_editable_on_Mobile_Client|Editing]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Editing_Documents_2]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_a_Document_ready_for_Redlining|Redlining]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Documents_(Client)#Redlining]]&lt;br /&gt;
|| Outdated and replaced by the annotation feature&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Navigation==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Online&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Different map apps on different platforms&lt;br /&gt;
|-&lt;br /&gt;
| Maps Navigation Offline&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| OSM, Sygic or other apps, optionally&lt;br /&gt;
|-&lt;br /&gt;
| [[Navigation_via_Augmented_Reality|AR Navigation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Navigate to objects in augmented reality&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker Device Pose Estimation]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using AR markers&lt;br /&gt;
|-&lt;br /&gt;
| [[Beacon_Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Estimates device positions using bluetooth beacons&lt;br /&gt;
|-&lt;br /&gt;
| [[Compass]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[GPS]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Gyroscope]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Object Proximity Positioning|Object Proximity]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses geo positions extracted from objects (scanned or selected)&lt;br /&gt;
|-&lt;br /&gt;
| [[Step Detector]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[Routing-Graph Snapping]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Points of Interest==&lt;br /&gt;
&lt;br /&gt;
=== Map ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|Map Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Geo_POIs]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#POI_details]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Buildings_.26_Indoor_Maps]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Map_layers_button]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Create_Image_Map_Overlays|Overlays]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Overlays]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View#Base_map]]&lt;br /&gt;
|| &lt;br /&gt;
|-&lt;br /&gt;
| [[SYSCLS_MAPSHAPE|Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Map_View_(Xamarin)#Map_Shapes]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| New MapsUI based feature&lt;br /&gt;
|-&lt;br /&gt;
| [[Geographies]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| UBIK proprietary solution&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Augmented Reality ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Item|POI Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Geo_POI]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View#Billboard]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_POI_Group|POI Groups &amp;amp; Buildings]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=POI_View_(Xamarin)#Group.2C_Building_.26_Level]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Declare_an_Object_as_Map_Layer|Layers and Layer Items]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| The same as in the map&lt;br /&gt;
|-&lt;br /&gt;
| POI Status Color&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object Identification==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|QR Code]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#QR_Code]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|Barcode]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Find_Objects_by_Optical_Codes]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Optical_code#Types_of_optical_codes]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[HowTo:Make_an_Object_be_found_by_Optical_Codes|ID Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| RFID&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=RFID_tags]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#RFID]]&lt;br /&gt;
|| For Xamarin, it's only supported on iOS &amp;amp; Android.&lt;br /&gt;
|-&lt;br /&gt;
| [[OCR]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| ID Marker 3D&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#ID_Marker_3D]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Markerless Image Tracking&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=UBIK_Client_Basics#Markerless]]&lt;br /&gt;
|| Obsolete&lt;br /&gt;
|-&lt;br /&gt;
| Configurable AR Content&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Configure_Dynamic_AR_Content]]&lt;br /&gt;
|| UWP and Xamarin use a new and more flexible technique (XAML)&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Aruco markers for POI display, object search, etc.&lt;br /&gt;
|-&lt;br /&gt;
| [[AR-Marker#Grouped_AR_Marker|Grouped AR Marker]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| To overcome the number limit of available markers&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;br /&gt;
&lt;br /&gt;
==Synchronization==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| Automatic Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Automatic Mode]]&lt;br /&gt;
|| Auto sync/download, auto commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Manual Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Manual Mode]]&lt;br /&gt;
|| Auto sync/download, manual commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Offline Mode&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Sync_Mode|Offline Mode]]&lt;br /&gt;
|| No sync/download, no commit/upload&lt;br /&gt;
|-&lt;br /&gt;
| Branch Download&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=Branch_Download]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Make data offline available&lt;br /&gt;
|-&lt;br /&gt;
| [[Branch_Download#Automatic_Download|Configurable Automatic Branch Download]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Configure data to be auto download in different manners&lt;br /&gt;
|-&lt;br /&gt;
| [[Push_Service_(Client)|Push]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
| [[Login_View#Login_details|Login Details]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| Delivers login details (of users) to clients&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center; width: 100%&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:28%&amp;quot; | Feature &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | UWP/&amp;lt;br/&amp;gt;WinX &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Xamarin &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Web &lt;br /&gt;
!! style=&amp;quot;width:7%&amp;quot; | Android&amp;lt;br/&amp;gt;(Obsolete) &lt;br /&gt;
!! style=&amp;quot;width:44%&amp;quot; | Comment&lt;br /&gt;
|-&lt;br /&gt;
| User Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by user&lt;br /&gt;
|-&lt;br /&gt;
| Device Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Resctrict login by device&lt;br /&gt;
|-&lt;br /&gt;
| Offline Authentication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Allows offline authentications after successful online ones&lt;br /&gt;
|-&lt;br /&gt;
| [[User_Rights]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Restricts what data can be seen and/or edit per user&lt;br /&gt;
|-&lt;br /&gt;
| SSL/TLS Encrypted Communication (HTTPS)&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Secured&lt;br /&gt;
|-&lt;br /&gt;
| HTTP Communication&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Unsecured&lt;br /&gt;
|-&lt;br /&gt;
| Manage Certificates&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| -&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|12px|link=HowTo:Install_UBIK_Client_Certificate]]&lt;br /&gt;
|| Manages (server) self signed certificates in UBIK&lt;br /&gt;
|-&lt;br /&gt;
| Proxy Support&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| Uses OS proxy settings during service communications&lt;br /&gt;
|-&lt;br /&gt;
| Terminate User Sessions&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_Full.png|8px|link=]]&lt;br /&gt;
|| [[Image:IC_Bullet_HalfFull.png|8px|link=]]&lt;br /&gt;
|| -&lt;br /&gt;
|| Terminates {{UBIK}} service sessions upon logout or closing&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Client Feature Table]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25567</id>
		<title>Version 4.6 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_4.6_(Xamarin)&amp;diff=25567"/>
				<updated>2023-11-15T07:37:39Z</updated>
		
		<summary type="html">&lt;p&gt;CBR: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|UBIK 4 clients can only connect to {{UBIK}} Servers of [[Version 3.6(Server)|version 3.6]] and higher!}}&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|iOS: Store Beta}}: Available through Apple App Store's [https://testflight.apple.com/join/ijGm4j2h invitation link].&lt;br /&gt;
&lt;br /&gt;
{{key press|UWP: App Center}}{{key press|Android: App Center}}{{key press|iOS: App Center}}: Available to those who have access to the Augmensys App Center.&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;
= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 4.6.1 on 2023-??-?? {{key press|App Center}} ===&lt;br /&gt;
* An arbitrary object can now be accessed in the UI via UID with the [[XAML_Tips#Access_to_an_arbitrary_object|ObjectByUID]] feature.&lt;br /&gt;
* It's now possible to scan barcodes and QR codes and apply [[Optical_code#Scan_with_code_affixes|code affixes]] during the searches.&lt;br /&gt;
* Fixed an issue where highlight colors in the pdfViewer did not work properly&lt;br /&gt;
&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;
= ⚠️ 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 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Version 4.6 Xamarin|Version 4.6 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 4.6 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CBR</name></author>	</entry>

	</feed>