<?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=CWU</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=CWU"/>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Special:Contributions/CWU"/>
		<updated>2026-05-01T21:38:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.8_(WinX)&amp;diff=23216</id>
		<title>Version 3.8 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.8_(WinX)&amp;diff=23216"/>
				<updated>2021-08-09T11:17:42Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.?? (2021-06-??) ==&lt;br /&gt;
* Fixed an occasional crash when the property list gets reloaded (ListToBindableVectorAdapter.EnsureIndexInt32 exceptions).&lt;br /&gt;
* Fixed an issue where the content creation button might be incorrectly disabled after the context object gets edited.&lt;br /&gt;
* Multi line drawings are now supported in UBIKPdfViewer&lt;br /&gt;
* Fixed an issue, that would cause a corruption of the profile&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.42 (2021-05-25/2021-06-30) {{key press|Store Beta}}/{{key press|Store}} ==&lt;br /&gt;
* The auto branch download feature is now disabled by default and can be enabled in the Content settings.&lt;br /&gt;
* Supports the scanning of color inverted 2D codes. It is an option that can be turned on/off in the Camera settings.&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.38 (2021-05-18) {{key press|DevOps}} ==&lt;br /&gt;
* PDFViewer now supports multi language use.&lt;br /&gt;
* PDFViewer now supports customizable toolbar/button color.&lt;br /&gt;
* Fixed issues where text highlight/underline/strike-through did not work in PDFViewer.&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.36 (2021-04-23) {{key press|Store}} ==&lt;br /&gt;
=== Feature highlight ===&lt;br /&gt;
* The client can now receive [[Login_View#Login_details|detailed information]] about the current user as well as other users.&lt;br /&gt;
* Users can now [[XAML#CaptureMediaCommand|record audios]] (in addition to videos and photos) as {{UBIK}} documents.&lt;br /&gt;
* Data customizers can now configure whether &amp;amp; how UBIK content should be [[Branch_Download#Automatic_Download|automatically downloaded]] to the clients.&lt;br /&gt;
* The DeviceID is now unique and independent of network hardware changes.&lt;br /&gt;
* Profile settings are now automatically saved when users leave the settings page.&lt;br /&gt;
* UBIKDetailsQueryArea is now fully customizable.&lt;br /&gt;
* Added basic [[Time_Zone_Support_(Client)|time zone support]].&lt;br /&gt;
* Re-implemented the annotation feature to unify it with the upcoming platform releases on Android and iOS&lt;br /&gt;
** On PDFs, an annotation can be edited as long as it's not merged into the document, but only by the user who created it&lt;br /&gt;
* The [[XAML#UBIKImageEditor|UBIKImageEditor]] provides the possibility to customize the following in XAML.&lt;br /&gt;
** The visibility of the image toolbar;&lt;br /&gt;
** Whether annotations should be saved separately in the annotation properties or &amp;quot;burnt into&amp;quot; the original images.&lt;br /&gt;
* The CreateChildItemCommand now supports specifying the owner (by its UID) under which the object should be created.&lt;br /&gt;
* Added a thumbnail indicator and a more helpful text header in the document flip view.&lt;br /&gt;
* Made the client aware of map overlays even when they are not a part of the infrastructure.&lt;br /&gt;
* Supports [[AR-Marker#Grouped_AR_Marker|grouping of AR markers]] (like for geo POIs) to overcome the limitation of the maximum 1024 unique Aruco markers.&lt;br /&gt;
* ContentViewModel.PropertyItems can now be filtered using the ListCollectionView.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue where the geo editor misbehaved for newly created objects (or those without original server values).&lt;br /&gt;
* Fixed an issue where changes to geo property values were lost in offline/manual mode.&lt;br /&gt;
* Fixed an issue where scanning did not work when the search box is customized away from the login page.&lt;br /&gt;
* Fixed an issue where the bottom menu item for creating child items stopped working.&lt;br /&gt;
* Fixed an issue where the POIs are sometimes not shown (when navigating from the map page to the POI page).&lt;br /&gt;
* Fixed an issue where content list items sometimes stopped responding to user interactions after content updates.&lt;br /&gt;
* Empty signatures can now not be confirmed anymore.&lt;br /&gt;
* Fixed an issue where single content updates did not cause the XAML filters to re-evaluate, resulting in content in filtered lists where it didn't belong.&lt;br /&gt;
* Fixed an issue, where the HotSpotClassification was needed to annotate an object.&lt;br /&gt;
* After entering/exiting a POI group, the correct Geo POIs are now displayed.&lt;br /&gt;
* Fixed some issues that prevented certain members from being displayed in the type browser of the developer mode.&lt;br /&gt;
* Fixed an issue where scanning might not work under certain circumstances (namely when the default search box is customized away from the login page).&lt;br /&gt;
* Fixed a bug where mass editing did not correctly apply its initial selection on all items.&lt;br /&gt;
* Fixed an issue where newly created document files could not be played until they are saved.&lt;br /&gt;
* Fixed missing commits if committing many objects at once.&lt;br /&gt;
* Fixed an issue where the first child document is not loaded when you navigate to a details page.&lt;br /&gt;
* Fixed an issue where the app freezes for seconds when displaying a large list of [[UBIK_WinX_Client_Basics#Properties_with_value_records|property values records]].&lt;br /&gt;
* Fixed missing previous/next buttons in the document flipview when a URL/linked document is presented.&lt;br /&gt;
* The profile browser now displays the path of the subfolders relative to the root folder for better readability.&lt;br /&gt;
* Fixed an issue where redlining didn't work when configured to navigate to the created documents upon finishing.&lt;br /&gt;
* Fixed an issue where root &amp;amp; infrastructure objects were not updated after users switch online manually and the app detects new meta definitions.&lt;br /&gt;
* Fixed an issue where the app might repeatedly update meta definitions and other data until users confirm the warning dialog about outdated meta definitions.&lt;br /&gt;
* Fixed an issue where it's not possible to enter/exit POI groups/buildings in the POI page.&lt;br /&gt;
* Fixed an issue where property lists become empty after multiple updates (in quick succession) on the same content.&lt;br /&gt;
* Fixed an issue where the app displayed no error message when failing to contact the content service right after login.&lt;br /&gt;
* Fixed an issue where the app displayed wrong versions of document files in certain cases (e.g. when apps such as OneDrive are syncing the pictures folder).&lt;br /&gt;
* Fixed an issue where the root page and the settings page displayed the wrong headers.&lt;br /&gt;
* Fixed an issue where the app gets stuck during offline logins when there are open/unprocessed pushes.&lt;br /&gt;
* Fixed an issue where Aruco POIs are not displayed when they are referenced by marker objects but are not marker objects themselves (without [[SYSCLS_ARMARKER]]).&lt;br /&gt;
* Fixed an issue where profiles are duplicated when their &amp;lt;Name&amp;gt; tags don't match their file names or when they are placed under sub folders.&lt;br /&gt;
* Fixed an issue where the setting to use Geo locations from scanned results is not persisted/restored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, list items might stop responding to clicks after online content updates. A refresh/reopening of the page solves the problem.&lt;br /&gt;
* Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.&lt;br /&gt;
* If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.&lt;br /&gt;
* The AR Marker related features are resource intense and can cause the app to slow down on weaker tablets.&lt;br /&gt;
* Sometimes after an external bluetooth RFID scanner is disconnected, the app still incorrectly recognizes it as available.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== UBIKMediaPlayerElement ==&lt;br /&gt;
This control is introduced to replace the old MediaElement we used for playing video/audio files. Because the old one had an issue that newly created document files can not be played until they are saved.&lt;br /&gt;
If this issue is relevant, you should update those XAML files that use MediaElement. See below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;New&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:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;controls:UBIKMediaPlayerElement&lt;br /&gt;
        ...&lt;br /&gt;
        SourceExt=&amp;quot;{Binding DocumentViewModel.LocalURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Old&amp;quot;&amp;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;MediaElement&lt;br /&gt;
        ...&lt;br /&gt;
        Source=&amp;quot;{Binding DocumentViewModel.LocalURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this issue is irrelevant or does not bother your users, you can skip updating the XAMLs since the old MediaElement still works for the most part.&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 3.8 (WinX)]]&lt;br /&gt;
[[Category:Version 3.8|Version 3.8 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 3.8 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.2_(Xamarin)&amp;diff=23211</id>
		<title>Version 1.2 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.2_(Xamarin)&amp;diff=23211"/>
				<updated>2021-07-28T13:09:08Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
=== 1.2.?? on 2021-??-?? ===&lt;br /&gt;
* XAML customizers can now specify expressions for [[Property_Based_Content_Filters#UpdatePropertyFiltersCommand|property based filtering]].&lt;br /&gt;
* Disabled Android app data backup for UBIK due to customer concerns on security.&lt;br /&gt;
* Multi line drawings are now supported in UBIKPdfViewer.&lt;br /&gt;
* The app no longer unnecessarily update online content when reapplying property based filtering.&lt;br /&gt;
* Fixed an issue where PickerExt doesn’t properly show selected items with pre-defined item sources.&lt;br /&gt;
* Fixed an issue where scroll positions were not remembered in some lists after content updates.&lt;br /&gt;
* Fixed an issue where loading of a big amount of POIs was blocking the UI&lt;br /&gt;
* Fixed an issue where POIs were not clickable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1.2.42 on 2021-07-20 {{key press|Android: Store}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Enabled the color styling of the app/navigation bar.&lt;br /&gt;
* Fixed an issue where the content creation button might be incorrectly disabled after the context object gets edited.&lt;br /&gt;
* Fixed an issue where sharing of .xamlx and .profile files with UBIK didn't work anymore (iOS).&lt;br /&gt;
* Added preview versions of new customizing behaviors and actions {{key press|Preview}}&lt;br /&gt;
** EventChangedBehavior&lt;br /&gt;
** DataChangedBehavior&lt;br /&gt;
** InvokeCommandAction&lt;br /&gt;
** InvokeMethodAction&lt;br /&gt;
** SetPropertyAction&lt;br /&gt;
** ScaleAction&lt;br /&gt;
** RotateAction&lt;br /&gt;
** TranslateAction&lt;br /&gt;
** FadeAction&lt;br /&gt;
* Annotations are now correctly reverted, when triggering revert in offline mode.&lt;br /&gt;
* Multi line drawings are now supported in PDF annotations (UBIKPdfViewer).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1.2.29 on 2021-05-31 {{key press|Android: Store}} {{key press|iOS: Store}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* This is the same version as the 1.2.29 beta.&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
=== 1.2.29 on 2021-05-21 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* The auto branch download feature is now disabled by default and can be enabled in the settings.&lt;br /&gt;
* Supports the scanning of color inverted 2D codes. It is an option that can be turned on/off in the AR settings.&lt;br /&gt;
&lt;br /&gt;
=== 1.2.28 on 2021-05-07 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} ===&lt;br /&gt;
* Fixed the broken iOS packages in 1.2.23 and 1.2.24.&lt;br /&gt;
* Fixed the orientations of photos taken in the app (iOS).&lt;br /&gt;
* Search for content by scanning RFID tags (now also on iOS).&lt;br /&gt;
&lt;br /&gt;
=== 1.2.23/24 on 2021-05-06 {{key press|iOS: App Center}} ===&lt;br /&gt;
* '''There is an installation issue of the iOS app due to an updated Apple account configuration. We apologize for the confusion caused and please skip these two versions.'''&lt;br /&gt;
&lt;br /&gt;
=== 1.2.22 on 2021-05-06 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Added a button in the settings to open the Readme document.&lt;br /&gt;
* Profile specific XAML customizings are now supported.&lt;br /&gt;
&lt;br /&gt;
=== 1.2.18 on 2021-05-03 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Fixed the orientations of photos taken in the app (except iOS).&lt;br /&gt;
&lt;br /&gt;
=== 1.2.17 on 2021-04-29 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Removed the preview toast upon app startup since we are in beta now.&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 1.2.15 on 2021-04-28 {{key press|Android: App Center}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* The property based content filtering can now receive criterion values from the [[Property_Based_Content_Filters#UpdatePropertyFiltersCommand|UpdatePropertyFiltersCommand]] and can be use in setups with more complex bindings. &lt;br /&gt;
* The Device ID now stays constant when network hardware changes.&lt;br /&gt;
* The client can now receive [[Login_View#Login_details|detailed information]] about the current user as well as other users.&lt;br /&gt;
* Data customizers can now configure whether &amp;amp; how UBIK content should be [[Branch_Download#Automatic_Download|automatically downloaded]] to the clients.&lt;br /&gt;
* Users can now [[XAML#CaptureMediaCommand|record audios and videos]] (in addition to photos) as {{UBIK}} documents.&lt;br /&gt;
* Search for content by scanning RFID tags (except iOS).&lt;br /&gt;
* Objects can now be unlocked in the new [[Optical_code#Unlock_mode|unlock mode]] without involving the search UI (result list or auto navigating to the objects).&lt;br /&gt;
* Fixed an issue where the app crashed on some iOS devices when loading annotated PDF documents.&lt;br /&gt;
* Fixed an issue where the app crashed on some iOS devices when selecting PDF annotations.&lt;br /&gt;
* Fixed an issue where edited content sometimes ended up in the wrong filtered lists.&lt;br /&gt;
* Fixed an issue where edited content list items changed their positions in the lists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
* In rare cases, a query page appears blank without list content after navigating back from another query page. In such cases, a workaround is to reopen it or pull the list area to refresh.&lt;br /&gt;
* [https://www.syncfusion.com/support/directtrac/incidents/301168 A memory leak] in general page navigation is present in this release and will be addressed soon in a patch.&lt;br /&gt;
* In rare cases, selection of PDF annotations might misbehave on iOS.&lt;br /&gt;
&lt;br /&gt;
= XAML changes =&lt;br /&gt;
&lt;br /&gt;
No major changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.2 Xamarin]]&lt;br /&gt;
[[Category:Version 1.2|Version 1.2 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 1.2 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.8_(WinX)&amp;diff=23203</id>
		<title>Version 3.8 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.8_(WinX)&amp;diff=23203"/>
				<updated>2021-07-20T09:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.?? (2021-06-??) ==&lt;br /&gt;
* Fixed an occasional crash when the property list gets reloaded (ListToBindableVectorAdapter.EnsureIndexInt32 exceptions).&lt;br /&gt;
* Fixed an issue where the content creation button might be incorrectly disabled after the context object gets edited.&lt;br /&gt;
* Multi line drawings are now supported in UBIKPdfViewer&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.42 (2021-05-25/2021-06-30) {{key press|Store Beta}}/{{key press|Store}} ==&lt;br /&gt;
* The auto branch download feature is now disabled by default and can be enabled in the Content settings.&lt;br /&gt;
* Supports the scanning of color inverted 2D codes. It is an option that can be turned on/off in the Camera settings.&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.38 (2021-05-18) {{key press|DevOps}} ==&lt;br /&gt;
* PDFViewer now supports multi language use.&lt;br /&gt;
* PDFViewer now supports customizable toolbar/button color.&lt;br /&gt;
* Fixed issues where text highlight/underline/strike-through did not work in PDFViewer.&lt;br /&gt;
&lt;br /&gt;
== Version 3.8.36 (2021-04-23) {{key press|Store}} ==&lt;br /&gt;
=== Feature highlight ===&lt;br /&gt;
* The client can now receive [[Login_View#Login_details|detailed information]] about the current user as well as other users.&lt;br /&gt;
* Users can now [[XAML#CaptureMediaCommand|record audios]] (in addition to videos and photos) as {{UBIK}} documents.&lt;br /&gt;
* Data customizers can now configure whether &amp;amp; how UBIK content should be [[Branch_Download#Automatic_Download|automatically downloaded]] to the clients.&lt;br /&gt;
* The DeviceID is now unique and independent of network hardware changes.&lt;br /&gt;
* Profile settings are now automatically saved when users leave the settings page.&lt;br /&gt;
* UBIKDetailsQueryArea is now fully customizable.&lt;br /&gt;
* Added basic [[Time_Zone_Support_(Client)|time zone support]].&lt;br /&gt;
* Re-implemented the annotation feature to unify it with the upcoming platform releases on Android and iOS&lt;br /&gt;
** On PDFs, an annotation can be edited as long as it's not merged into the document, but only by the user who created it&lt;br /&gt;
* The [[XAML#UBIKImageEditor|UBIKImageEditor]] provides the possibility to customize the following in XAML.&lt;br /&gt;
** The visibility of the image toolbar;&lt;br /&gt;
** Whether annotations should be saved separately in the annotation properties or &amp;quot;burnt into&amp;quot; the original images.&lt;br /&gt;
* The CreateChildItemCommand now supports specifying the owner (by its UID) under which the object should be created.&lt;br /&gt;
* Added a thumbnail indicator and a more helpful text header in the document flip view.&lt;br /&gt;
* Made the client aware of map overlays even when they are not a part of the infrastructure.&lt;br /&gt;
* Supports [[AR-Marker#Grouped_AR_Marker|grouping of AR markers]] (like for geo POIs) to overcome the limitation of the maximum 1024 unique Aruco markers.&lt;br /&gt;
* ContentViewModel.PropertyItems can now be filtered using the ListCollectionView.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue where the geo editor misbehaved for newly created objects (or those without original server values).&lt;br /&gt;
* Fixed an issue where changes to geo property values were lost in offline/manual mode.&lt;br /&gt;
* Fixed an issue where scanning did not work when the search box is customized away from the login page.&lt;br /&gt;
* Fixed an issue where the bottom menu item for creating child items stopped working.&lt;br /&gt;
* Fixed an issue where the POIs are sometimes not shown (when navigating from the map page to the POI page).&lt;br /&gt;
* Fixed an issue where content list items sometimes stopped responding to user interactions after content updates.&lt;br /&gt;
* Empty signatures can now not be confirmed anymore.&lt;br /&gt;
* Fixed an issue where single content updates did not cause the XAML filters to re-evaluate, resulting in content in filtered lists where it didn't belong.&lt;br /&gt;
* Fixed an issue, where the HotSpotClassification was needed to annotate an object.&lt;br /&gt;
* After entering/exiting a POI group, the correct Geo POIs are now displayed.&lt;br /&gt;
* Fixed some issues that prevented certain members from being displayed in the type browser of the developer mode.&lt;br /&gt;
* Fixed an issue where scanning might not work under certain circumstances (namely when the default search box is customized away from the login page).&lt;br /&gt;
* Fixed a bug where mass editing did not correctly apply its initial selection on all items.&lt;br /&gt;
* Fixed an issue where newly created document files could not be played until they are saved.&lt;br /&gt;
* Fixed missing commits if committing many objects at once.&lt;br /&gt;
* Fixed an issue where the first child document is not loaded when you navigate to a details page.&lt;br /&gt;
* Fixed an issue where the app freezes for seconds when displaying a large list of [[UBIK_WinX_Client_Basics#Properties_with_value_records|property values records]].&lt;br /&gt;
* Fixed missing previous/next buttons in the document flipview when a URL/linked document is presented.&lt;br /&gt;
* The profile browser now displays the path of the subfolders relative to the root folder for better readability.&lt;br /&gt;
* Fixed an issue where redlining didn't work when configured to navigate to the created documents upon finishing.&lt;br /&gt;
* Fixed an issue where root &amp;amp; infrastructure objects were not updated after users switch online manually and the app detects new meta definitions.&lt;br /&gt;
* Fixed an issue where the app might repeatedly update meta definitions and other data until users confirm the warning dialog about outdated meta definitions.&lt;br /&gt;
* Fixed an issue where it's not possible to enter/exit POI groups/buildings in the POI page.&lt;br /&gt;
* Fixed an issue where property lists become empty after multiple updates (in quick succession) on the same content.&lt;br /&gt;
* Fixed an issue where the app displayed no error message when failing to contact the content service right after login.&lt;br /&gt;
* Fixed an issue where the app displayed wrong versions of document files in certain cases (e.g. when apps such as OneDrive are syncing the pictures folder).&lt;br /&gt;
* Fixed an issue where the root page and the settings page displayed the wrong headers.&lt;br /&gt;
* Fixed an issue where the app gets stuck during offline logins when there are open/unprocessed pushes.&lt;br /&gt;
* Fixed an issue where Aruco POIs are not displayed when they are referenced by marker objects but are not marker objects themselves (without [[SYSCLS_ARMARKER]]).&lt;br /&gt;
* Fixed an issue where profiles are duplicated when their &amp;lt;Name&amp;gt; tags don't match their file names or when they are placed under sub folders.&lt;br /&gt;
* Fixed an issue where the setting to use Geo locations from scanned results is not persisted/restored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Sometimes, list items might stop responding to clicks after online content updates. A refresh/reopening of the page solves the problem.&lt;br /&gt;
* Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.&lt;br /&gt;
* If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.&lt;br /&gt;
* The AR Marker related features are resource intense and can cause the app to slow down on weaker tablets.&lt;br /&gt;
* Sometimes after an external bluetooth RFID scanner is disconnected, the app still incorrectly recognizes it as available.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= XAML Notes =&lt;br /&gt;
&lt;br /&gt;
== UBIKMediaPlayerElement ==&lt;br /&gt;
This control is introduced to replace the old MediaElement we used for playing video/audio files. Because the old one had an issue that newly created document files can not be played until they are saved.&lt;br /&gt;
If this issue is relevant, you should update those XAML files that use MediaElement. See below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;New&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:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;controls:UBIKMediaPlayerElement&lt;br /&gt;
        ...&lt;br /&gt;
        SourceExt=&amp;quot;{Binding DocumentViewModel.LocalURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Old&amp;quot;&amp;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;MediaElement&lt;br /&gt;
        ...&lt;br /&gt;
        Source=&amp;quot;{Binding DocumentViewModel.LocalURI}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If this issue is irrelevant or does not bother your users, you can skip updating the XAMLs since the old MediaElement still works for the most part.&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 3.8 (WinX)]]&lt;br /&gt;
[[Category:Version 3.8|Version 3.8 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 3.8 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.2_(Xamarin)&amp;diff=23202</id>
		<title>Version 1.2 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.2_(Xamarin)&amp;diff=23202"/>
				<updated>2021-07-20T09:03:18Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Release ==&lt;br /&gt;
&lt;br /&gt;
=== 1.2.?? on 2021-??-?? ===&lt;br /&gt;
* XAML customizers can now specify expressions for [[Property_Based_Content_Filters#UpdatePropertyFiltersCommand|property based filtering]].&lt;br /&gt;
* Disabled Android app data backup for UBIK due to customer concerns on security.&lt;br /&gt;
* Multi line drawings are now supported in UBIKPdfViewer&lt;br /&gt;
&lt;br /&gt;
=== 1.2.42 on 2021-07-20 {{key press|Android: Store}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Enabled the color styling of the app/navigation bar.&lt;br /&gt;
* Fixed an issue where the content creation button might be incorrectly disabled after the context object gets edited.&lt;br /&gt;
* Fixed an issue where sharing of .xamlx and .profile files with UBIK didn't work anymore (iOS).&lt;br /&gt;
* Added preview versions of new customizing behaviors and actions {{key press|Preview}}&lt;br /&gt;
** EventChangedBehavior&lt;br /&gt;
** DataChangedBehavior&lt;br /&gt;
** InvokeCommandAction&lt;br /&gt;
** InvokeMethodAction&lt;br /&gt;
** SetPropertyAction&lt;br /&gt;
** ScaleAction&lt;br /&gt;
** RotateAction&lt;br /&gt;
** TranslateAction&lt;br /&gt;
** FadeAction&lt;br /&gt;
* Annotations are now correctly reverted, when triggering revert in offline mode.&lt;br /&gt;
* Multi line drawings are now supported in PDF annotations (UBIKPdfViewer).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1.2.29 on 2021-05-31 {{key press|Android: Store}} {{key press|iOS: Store}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* This is the same version as the 1.2.29 beta.&lt;br /&gt;
&lt;br /&gt;
== Beta ==&lt;br /&gt;
&lt;br /&gt;
=== 1.2.29 on 2021-05-21 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* The auto branch download feature is now disabled by default and can be enabled in the settings.&lt;br /&gt;
* Supports the scanning of color inverted 2D codes. It is an option that can be turned on/off in the AR settings.&lt;br /&gt;
&lt;br /&gt;
=== 1.2.28 on 2021-05-07 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} ===&lt;br /&gt;
* Fixed the broken iOS packages in 1.2.23 and 1.2.24.&lt;br /&gt;
* Fixed the orientations of photos taken in the app (iOS).&lt;br /&gt;
* Search for content by scanning RFID tags (now also on iOS).&lt;br /&gt;
&lt;br /&gt;
=== 1.2.23/24 on 2021-05-06 {{key press|iOS: App Center}} ===&lt;br /&gt;
* '''There is an installation issue of the iOS app due to an updated Apple account configuration. We apologize for the confusion caused and please skip these two versions.'''&lt;br /&gt;
&lt;br /&gt;
=== 1.2.22 on 2021-05-06 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Added a button in the settings to open the Readme document.&lt;br /&gt;
* Profile specific XAML customizings are now supported.&lt;br /&gt;
&lt;br /&gt;
=== 1.2.18 on 2021-05-03 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Fixed the orientations of photos taken in the app (except iOS).&lt;br /&gt;
&lt;br /&gt;
=== 1.2.17 on 2021-04-29 {{key press|Android: Store Beta}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* Removed the preview toast upon app startup since we are in beta now.&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
&lt;br /&gt;
=== 1.2.15 on 2021-04-28 {{key press|Android: App Center}} {{key press|iOS: App Center}} {{key press|UWP: App Center}} ===&lt;br /&gt;
* The property based content filtering can now receive criterion values from the [[Property_Based_Content_Filters#UpdatePropertyFiltersCommand|UpdatePropertyFiltersCommand]] and can be use in setups with more complex bindings. &lt;br /&gt;
* The Device ID now stays constant when network hardware changes.&lt;br /&gt;
* The client can now receive [[Login_View#Login_details|detailed information]] about the current user as well as other users.&lt;br /&gt;
* Data customizers can now configure whether &amp;amp; how UBIK content should be [[Branch_Download#Automatic_Download|automatically downloaded]] to the clients.&lt;br /&gt;
* Users can now [[XAML#CaptureMediaCommand|record audios and videos]] (in addition to photos) as {{UBIK}} documents.&lt;br /&gt;
* Search for content by scanning RFID tags (except iOS).&lt;br /&gt;
* Objects can now be unlocked in the new [[Optical_code#Unlock_mode|unlock mode]] without involving the search UI (result list or auto navigating to the objects).&lt;br /&gt;
* Fixed an issue where the app crashed on some iOS devices when loading annotated PDF documents.&lt;br /&gt;
* Fixed an issue where the app crashed on some iOS devices when selecting PDF annotations.&lt;br /&gt;
* Fixed an issue where edited content sometimes ended up in the wrong filtered lists.&lt;br /&gt;
* Fixed an issue where edited content list items changed their positions in the lists.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
* In rare cases, a query page appears blank without list content after navigating back from another query page. In such cases, a workaround is to reopen it or pull the list area to refresh.&lt;br /&gt;
* [https://www.syncfusion.com/support/directtrac/incidents/301168 A memory leak] in general page navigation is present in this release and will be addressed soon in a patch.&lt;br /&gt;
* In rare cases, selection of PDF annotations might misbehave on iOS.&lt;br /&gt;
&lt;br /&gt;
= XAML changes =&lt;br /&gt;
&lt;br /&gt;
No major changes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.2 Xamarin]]&lt;br /&gt;
[[Category:Version 1.2|Version 1.2 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 1.2 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML&amp;diff=23135</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML&amp;diff=23135"/>
				<updated>2021-05-19T11:32:46Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
==== CoolGridSplitter (UBIK.WinX.Controls) ====&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;uc:CoolGridSplitter&lt;br /&gt;
    x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
    Height=&amp;quot;10&amp;quot;&lt;br /&gt;
    HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
    Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
    Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
    ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKImageEditor ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/uwp/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;using:UBIK.WinX.UI.Controls&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;using:Syncfusion.UI.Xaml.ImageEditor&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsToolbarVisiblity=&amp;quot;False&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
It's essentially the [https://help.syncfusion.com/xamarin/image-editor/overview SfImageEditor] from Syncfusion. Theoretically, customizability mentioned in their official documentations should be supported in {{UBIK}} out of the box.&lt;br /&gt;
One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
xmlns:ctrls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor ...&lt;br /&gt;
    xmlns:sfImageEditor=&amp;quot;clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
	&amp;lt;sfImageEditor:ToolbarSettings IsVisible=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/sfImageEditor:SfImageEditor.ToolbarSettings&amp;gt;&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false'', default), or if they should be merged directly into the original file (''true''): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ctrls:UBIKImageEditor MergeAnnotationsOnSave=&amp;quot;true&amp;quot; &amp;lt;!--true to merge automatically, false to use the classification--&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
&amp;lt;/ctrls:UBIKImageEditor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UBIKPdfViewer ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush&lt;br /&gt;
* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush&lt;br /&gt;
* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush&lt;br /&gt;
* The Save / Annotation Buttons can be hidden with SaveButtonVisibility=&amp;quot;Collapsed&amp;quot; and AnnotationButtonVisibility=&amp;quot;Collapsed&amp;quot; in XAML&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
==== [[EvalExpression]] ====&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Outdated and replaced by the [[XAML_Changes_in_UBIK_WinX_3.5#Filtering_by_expressions|ListCollectionView]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{Hint|The previously listed available properties for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
{{Hint|The previously listed available commands for binding is removed from here. Since it's more accurate and up-to-date to use the [[Developer Mode]] to inspect them in your version of the clients.}}&lt;br /&gt;
&lt;br /&gt;
=== Examples for commands with complex parameters ===&lt;br /&gt;
&lt;br /&gt;
==== CaptureMediaCommand ====&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;UWP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:controls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;controls:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;controls:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/controls:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Xamarin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
    ...&lt;br /&gt;
    xmlns:classes=&amp;quot;clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    Command=&amp;quot;{Binding CaptureMediaCommand}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;MediaCaptureMode&amp;quot; Value=&amp;quot;Video&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;classes:KeyValueParameter Key=&amp;quot;ChildMetaDefUid&amp;quot; Value=&amp;quot;6170a068-2314-4444-ad62-0da99769a048&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
    &amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}&lt;br /&gt;
{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if &amp;quot;*.mp4&amp;quot; is not included as a selective list item in the [[SYSCLS_FILEDOCUMENT|file type]] meta property, video document creation will not be possible.}}&lt;br /&gt;
&lt;br /&gt;
* MediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;&lt;br /&gt;
* ChildMetaDefUid: The Guid of the child meta definition to be used for creating the captured media document. If unspecified, the client will simply pick the first child meta definition that is of media type and is allowed under the current context/parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Differences between Xamarin and UWP ==&lt;br /&gt;
&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Xamarin, which is used to develop clients for three different platforms namely iOS, Android and new UWP (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Xamarin in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and in general the internet can support you when searching e.g. for a control in Xamarin that you used in UWP.&lt;br /&gt;
More specific documentations about Xamarin Customizing can be found under [[Xamarin XAML]].&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
[[Category:XAML|XAML]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Rfid&amp;diff=23132</id>
		<title>Rfid</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Rfid&amp;diff=23132"/>
				<updated>2021-05-11T08:48:11Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order for the users to find objects more efficiently, one can mark {{UBIK}} objects with [[#Technical_background|certain properties]]. Whenever a user scans a RFID tag with the {{UBIK}} client, the resulting ID value can be used to find all matching objects, namely objects that have the right property.&lt;br /&gt;
&lt;br /&gt;
== Introduction: RFID &amp;amp; NFC ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Near_field_communication NFC] stands for &amp;quot;Near Field Communication&amp;quot; and is a set of ideas and technologies for data transfer between devices, typically in close distances.&lt;br /&gt;
Technically, it is based on [http://en.wikipedia.org/wiki/Radio-frequency_identification RFID] (&amp;quot;Radio-Frequency Identification&amp;quot;), which describes specific technical solutions.&lt;br /&gt;
&lt;br /&gt;
Amongst the use cases for NFC, there is communication between smartphones and other devices, but also the scanning of RFID tags.&lt;br /&gt;
&lt;br /&gt;
The {{UBIK}} RFID scanning feature specifically is the ability to scan RFID tags in order to identify {{UBIK}} objects.&lt;br /&gt;
&lt;br /&gt;
== Supported RFID Tags ==&lt;br /&gt;
The client uses NDEF (NFC Data Exchange Format) for maximum compatibilty between NFC devices, tag types, and operating systems.&lt;br /&gt;
&lt;br /&gt;
== Supported Devices ==&lt;br /&gt;
When your client supports NFC, you can see this by opening the side menu. If NFC is supported, a button for enabling/disabling NFC is shown on the top.&lt;br /&gt;
&lt;br /&gt;
== Search modes ==&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} provides two modes for searching objects: [[Sync Mode#Possible sync modes|online and offline]].&lt;br /&gt;
&lt;br /&gt;
=== Searching offline ===&lt;br /&gt;
&lt;br /&gt;
In any case (regardless of the network connection and [[Sync Mode|sync mode]]), {{UBIK}} always goes through all the objects currently available on the device and find the ones that match the scanned results.&lt;br /&gt;
&lt;br /&gt;
=== Searching online ===&lt;br /&gt;
&lt;br /&gt;
When the Internet is avaiable and {{UBIK}} is not running under offline mode, the search result is enhanced by online search. This means any objects that match the scanned results can be found even if they don't yet exist locally.&lt;br /&gt;
&lt;br /&gt;
== Search result ==&lt;br /&gt;
If the device is placed near an NFC Tag (and NFC is turned on), a search is triggered automatically. The side menu will open up and show the results. If there is exactly one result, the client automatically navigates to that object, if there are more results, the user can select the object out of the list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Classifications ==&lt;br /&gt;
&lt;br /&gt;
In order for objects to be identifiable through RFID, they have to carry the [[SYSCLS OBJECTWITHRFIDTAG]] classification.&lt;br /&gt;
&lt;br /&gt;
The service query used for online searching is [[SYSCLS RFIDTAGSCANQUERY]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SYSCLS OBJECTWITHRFIDTAG]]&lt;br /&gt;
* [[SYSCLS RFIDTAGSCANQUERY]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.4.2}}&lt;br /&gt;
{{Category/Version|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.4.1|Rfid]]&lt;br /&gt;
[[Category:2.4.2|Rfid]]&lt;br /&gt;
[[Category:2.4.5|Rfid]]&lt;br /&gt;
[[Category:Xamarin|Rfid]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Category:Xamarin_1.2&amp;diff=23131</id>
		<title>Category:Xamarin 1.2</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Category:Xamarin_1.2&amp;diff=23131"/>
				<updated>2021-05-11T08:45:33Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=23031</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=23031"/>
				<updated>2021-03-22T09:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Fit Mode{{Version/WinXSince|3.5}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Android and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. &lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details Page ===&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
==== Locked objects ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properities having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Editors ====&lt;br /&gt;
&lt;br /&gt;
===== Geo Editor &amp;amp; Teach In =====&lt;br /&gt;
&lt;br /&gt;
==== Guid editor ====&lt;br /&gt;
[[File:Guid_property_dialog.PNG|thumb|border|alt=Guid property editor dialog|Guid property editor dialog]]&lt;br /&gt;
&lt;br /&gt;
To edit Guid properties (that do not have a selective list available), we have implemented a special system. Since a Guid property always just contains the Guid as a reference to another object, we can use a query to find the object we want to assign to this property.&lt;br /&gt;
&lt;br /&gt;
When the Guid property has a FilterQuery datamember (which should contain the guid of a query), it will become editable through this query. Note that this FilterQuery guid will not actually be visible in the client. All this should be setup in the backend, the client has no control over this.&lt;br /&gt;
&lt;br /&gt;
When clicking an editable Guid property, you will see a dialog with up to 3 extra buttons added (see image):&lt;br /&gt;
&lt;br /&gt;
;View Object&lt;br /&gt;
:This button will be enabled when there is a valid guid assigned to the property. Clicking this button will immediately navigate to the referenced object.&lt;br /&gt;
;Edit Property&lt;br /&gt;
:If the property has a valid FilterQuery assigned to it, clicking this button will launch that query. If no FilterQuery is assigned, this button will be invisible.&lt;br /&gt;
;Clear Property Value&lt;br /&gt;
:If the property has a guid assigned, the user can press this button to reset the value back to empty.&lt;br /&gt;
&lt;br /&gt;
Additionally, if a valid FilterQuery is assigned, the user will see the results of that query ''inline'', if the query delivers 200 results or fewer. The user can select an item from this horizontally scrollable list, and press &amp;quot;OK&amp;quot; to assign the UID of the selected object to the Guid property. This is useful for cases where the user does not want to jump into the full query to be able to select an object.&lt;br /&gt;
&lt;br /&gt;
If the user does choose to launch the full query page (or if the query returns over 200 objects), they can click any of the displayed items in the query's child list. When clicking one of them, it will immediately be set as the reference in the original Guid property. To cancel selecting an item (and stop editing the property), simply navigate to any other page (by pressing back, using navigation bar, etc).&lt;br /&gt;
&lt;br /&gt;
{{hint|'''Skipping the dialog'''&lt;br /&gt;
If editing the property in a query page without having to go through the dialog is desired, one can customize the boolean variable &amp;quot;SkipQueryDialog&amp;quot; in UBIKThemes.xaml. If none can be found, simply add the following line into its &amp;quot;Default&amp;quot; ResourceDictionary.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;x:Boolean x:Key=&amp;quot;SkipQueryDialog&amp;quot;&amp;gt;True&amp;lt;/x:Boolean&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !! Fit to height&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Small.png|240x225px]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Large.png|240x225px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Attention|This feature currently only works for PDFs (it is not supported for Images). }}&lt;br /&gt;
{{Hint|Double tapping on a document toggles the display between &amp;quot;Fit to width&amp;quot; and the fit mode that document is configured with.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
==== Customizing Possibilities ====&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_EditDocumentButton.png|thumb|Button to edit a document]]&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the bottom app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
[[File:UI_WinX_EditDocumentOverlayButton.png|thumb|Edit button in thumbnail overlay]]&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which brings up an overlay of buttons, and then select the {{key press|edit}} button. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime agian when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Rfid&amp;diff=23013</id>
		<title>Rfid</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Rfid&amp;diff=23013"/>
				<updated>2021-02-23T10:59:24Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Search result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order for the users to find objects more efficiently, one can mark {{UBIK}} objects with [[#Technical_background|certain properties]]. Whenever a user scans a RFID tag with the {{UBIK}} client, the resulting ID value can be used to find all matching objects, namely objects that have the right property.&lt;br /&gt;
&lt;br /&gt;
== Introduction: RFID &amp;amp; NFC ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Near_field_communication NFC] stands for &amp;quot;Near Field Communication&amp;quot; and is a set of ideas and technologies for data transfer between devices, typically in close distances.&lt;br /&gt;
Technically, it is based on [http://en.wikipedia.org/wiki/Radio-frequency_identification RFID] (&amp;quot;Radio-Frequency Identification&amp;quot;), which describes specific technical solutions.&lt;br /&gt;
&lt;br /&gt;
Amongst the use cases for NFC, there is communication between smartphones and other devices, but also the scanning of RFID tags.&lt;br /&gt;
&lt;br /&gt;
The {{UBIK}} RFID scanning feature specifically is the ability to scan RFID tags in order to identify {{UBIK}} objects.&lt;br /&gt;
&lt;br /&gt;
== Supported RFID Tags ==&lt;br /&gt;
The client uses NDEF (NFC Data Exchange Format) for maximum compatibilty between NFC devices, tag types, and operating systems.&lt;br /&gt;
&lt;br /&gt;
== Supported Devices ==&lt;br /&gt;
When your client supports NFC, you can see this by opening the side menu. If NFC is supported, a button for enabling/disabling NFC is shown on the top.&lt;br /&gt;
&lt;br /&gt;
== Search modes ==&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} provides two modes for searching objects: [[Sync Mode#Possible sync modes|online and offline]].&lt;br /&gt;
&lt;br /&gt;
=== Searching offline ===&lt;br /&gt;
&lt;br /&gt;
In any case (regardless of the network connection and [[Sync Mode|sync mode]]), {{UBIK}} always goes through all the objects currently available on the device and find the ones that match the scanned results.&lt;br /&gt;
&lt;br /&gt;
=== Searching online ===&lt;br /&gt;
&lt;br /&gt;
When the Internet is avaiable and {{UBIK}} is not running under offline mode, the search result is enhanced by online search. This means any objects that match the scanned results can be found even if they don't yet exist locally.&lt;br /&gt;
&lt;br /&gt;
== Search result ==&lt;br /&gt;
If the device is placed near an NFC Tag (and NFC is turned on), a search is triggered automatically. The side menu will open up and show the results. If there is exactly one result, the client automatically navigates to that object, if there are more results, the user can select the object out of the list.&lt;br /&gt;
&lt;br /&gt;
[[Category:2.4.1|Rfid]]&lt;br /&gt;
[[Category:2.4.2|Rfid]]&lt;br /&gt;
[[Category:2.4.5|Rfid]]&lt;br /&gt;
&lt;br /&gt;
== Classifications ==&lt;br /&gt;
&lt;br /&gt;
In order for objects to be identifiable through RFID, they have to carry the [[SYSCLS OBJECTWITHRFIDTAG]] classification.&lt;br /&gt;
&lt;br /&gt;
The service query used for online searching is [[SYSCLS RFIDTAGSCANQUERY]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SYSCLS OBJECTWITHRFIDTAG]]&lt;br /&gt;
* [[SYSCLS RFIDTAGSCANQUERY]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.4.2}}&lt;br /&gt;
{{Category/Version|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.4.1|Rfid]]&lt;br /&gt;
[[Category:2.4.2|Rfid]]&lt;br /&gt;
[[Category:2.4.5|Rfid]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Rfid&amp;diff=23012</id>
		<title>Rfid</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Rfid&amp;diff=23012"/>
				<updated>2021-02-23T10:50:52Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order for the users to find objects more efficiently, one can mark {{UBIK}} objects with [[#Technical_background|certain properties]]. Whenever a user scans a RFID tag with the {{UBIK}} client, the resulting ID value can be used to find all matching objects, namely objects that have the right property.&lt;br /&gt;
&lt;br /&gt;
== Introduction: RFID &amp;amp; NFC ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Near_field_communication NFC] stands for &amp;quot;Near Field Communication&amp;quot; and is a set of ideas and technologies for data transfer between devices, typically in close distances.&lt;br /&gt;
Technically, it is based on [http://en.wikipedia.org/wiki/Radio-frequency_identification RFID] (&amp;quot;Radio-Frequency Identification&amp;quot;), which describes specific technical solutions.&lt;br /&gt;
&lt;br /&gt;
Amongst the use cases for NFC, there is communication between smartphones and other devices, but also the scanning of RFID tags.&lt;br /&gt;
&lt;br /&gt;
The {{UBIK}} RFID scanning feature specifically is the ability to scan RFID tags in order to identify {{UBIK}} objects.&lt;br /&gt;
&lt;br /&gt;
== Supported RFID Tags ==&lt;br /&gt;
The client uses NDEF (NFC Data Exchange Format) for maximum compatibilty between NFC devices, tag types, and operating systems.&lt;br /&gt;
&lt;br /&gt;
== Supported Devices ==&lt;br /&gt;
When your client supports NFC, you can see this by opening the side menu. If NFC is supported, a button for enabling/disabling NFC is shown on the top.&lt;br /&gt;
&lt;br /&gt;
== Search modes ==&lt;br /&gt;
&lt;br /&gt;
{{UBIK}} provides two modes for searching objects: [[Sync Mode#Possible sync modes|online and offline]].&lt;br /&gt;
&lt;br /&gt;
=== Searching offline ===&lt;br /&gt;
&lt;br /&gt;
In any case (regardless of the network connection and [[Sync Mode|sync mode]]), {{UBIK}} always goes through all the objects currently available on the device and find the ones that match the scanned results.&lt;br /&gt;
&lt;br /&gt;
=== Searching online ===&lt;br /&gt;
&lt;br /&gt;
When the Internet is avaiable and {{UBIK}} is not running under offline mode, the search result is enhanced by online search. This means any objects that match the scanned results can be found even if they don't yet exist locally.&lt;br /&gt;
&lt;br /&gt;
== Search result ==&lt;br /&gt;
If the phone is placed near an NFC Tag, a search is triggered automatically. The side menu will open up and show the results. If there is exactly one result, the client automatically navigates to that object, if there are more results, the user can select the object out of the list.&lt;br /&gt;
&lt;br /&gt;
== Classifications ==&lt;br /&gt;
&lt;br /&gt;
In order for objects to be identifiable through RFID, they have to carry the [[SYSCLS OBJECTWITHRFIDTAG]] classification.&lt;br /&gt;
&lt;br /&gt;
The service query used for online searching is [[SYSCLS RFIDTAGSCANQUERY]].&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SYSCLS OBJECTWITHRFIDTAG]]&lt;br /&gt;
* [[SYSCLS RFIDTAGSCANQUERY]]&lt;br /&gt;
&lt;br /&gt;
{{Category/Version|2.4.2}}&lt;br /&gt;
{{Category/Version|2.4.5}}&lt;br /&gt;
&lt;br /&gt;
[[Category:2.4.1|Rfid]]&lt;br /&gt;
[[Category:2.4.2|Rfid]]&lt;br /&gt;
[[Category:2.4.5|Rfid]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=AddChildCommand&amp;diff=23005</id>
		<title>AddChildCommand</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=AddChildCommand&amp;diff=23005"/>
				<updated>2021-02-08T06:54:26Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: Created page with &amp;quot;Opens a file selection dialog, to add documents under the current object.In the standard case this command does not need any parameters. If the dialog should allow multi file...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Opens a file selection dialog, to add documents under the current object.In the standard case this command does not need any parameters. If the dialog should allow multi file selection, the command should be used as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;ToolbarItem&lt;br /&gt;
            Name=&amp;quot;MenuAdd&amp;quot;&lt;br /&gt;
            Command=&amp;quot;{Binding AddChildCommand}&amp;quot;&lt;br /&gt;
            Text=&amp;quot;Add&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ToolbarItem.CommandParameter&amp;gt;&lt;br /&gt;
                &amp;lt;classes:KeyValueList&amp;gt;&lt;br /&gt;
                    &amp;lt;classes:KeyValueParameter Key=&amp;quot;MultipleChildItems&amp;quot; Value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/classes:KeyValueList&amp;gt;&lt;br /&gt;
            &amp;lt;/ToolbarItem.CommandParameter&amp;gt;&lt;br /&gt;
        &amp;lt;/ToolbarItem&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.1_(Xamarin)&amp;diff=22832</id>
		<title>Version 1.1 (Xamarin)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.1_(Xamarin)&amp;diff=22832"/>
				<updated>2020-12-10T09:36:41Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release Notes =&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1.xx ===&lt;br /&gt;
* Implemented Scan-to-input for String properties&lt;br /&gt;
&lt;br /&gt;
=== 1.1.85 on 2020-12-03 ===&lt;br /&gt;
* It's now possible to use the UBIKContentView with a explicitly specified custom template (its &amp;quot;Content&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== 1.1.84 on 2020-11-24 ===&lt;br /&gt;
* Fixed an issue where buttons (triggering commands) might be enabled/disabled incorrectly when navigating back to a page. &lt;br /&gt;
&lt;br /&gt;
=== 1.1.83 on 2020-11-19 {{key press|store version}} ===&lt;br /&gt;
* Fixed an issue where XAML based filtering doesn't work for changed items.&lt;br /&gt;
* Fixed memory leaks caused by images and glyphs&lt;br /&gt;
&lt;br /&gt;
=== 1.1.81 on 2020-11-18 ===&lt;br /&gt;
* Fixed an issue where root objects were loaded from the server on every navigation step.&lt;br /&gt;
* Fixed an issue where added PDF annotations could not be removed or edited anymore.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.80 on 2020-11-17 ===&lt;br /&gt;
* Fixed an issue where a page refresh triggered by property based list filtering causes the app to pause (as if stuck at the previous page).&lt;br /&gt;
* Fixed a crash related to list views on iOS.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.78 on 2020-11-16 {{key press|store version}} ===&lt;br /&gt;
* Fixed a performance issue when navigating.&lt;br /&gt;
* Fixed a crash on some devices when navigating away from a PDF page.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.76 on 2020-11-12 {{key press|store version}} ===&lt;br /&gt;
* Fixed an issue where query results are sometimes not displayed in a Guid editor when it’s first opened.&lt;br /&gt;
* Fixed bug that caused cascaded work packages to not update their status properly when navigating back.&lt;br /&gt;
* Improved infrastructure document Files download behaviour.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Previews ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1.64 on 2020-10-16 ===&lt;br /&gt;
* Updated some app icons.&lt;br /&gt;
* Added a hamburger button and a back button to full screen pages where the navigation/title bar is not available (POI, map, scan).&lt;br /&gt;
* Made the client aware of map overlays even when they are not a part of the infrastructure.&lt;br /&gt;
* Fixed an issue where old routing arrows from previous sessions were incorrectly displayed.&lt;br /&gt;
* Fixed an issue where list items sometimes changed their appearing positions and caused strange UI issues (e.g. unclickable, outdated texts, etc.).&lt;br /&gt;
* Fixed a bug where the app would not navigate back after creating a new Object.&lt;br /&gt;
* Fixed an issue where documents created offline are not uploaded after a restart or a new login.&lt;br /&gt;
* Fixed an issue where archived UI customizings were not properly unpacked.&lt;br /&gt;
* Fixed an issue where the delete option in the context menu didn't always work.&lt;br /&gt;
* The swipe gesture is now disabled when looking at documents so that panning/zooming is not conflicted.&lt;br /&gt;
* Ensured that every device can enter a decimal separator in a numeric field.&lt;br /&gt;
* Updated some localized text resources.&lt;br /&gt;
* Improved the speed of loading profiles &amp;amp; XAML resources.&lt;br /&gt;
* Fixed a crash when opening the settings page on iOS14.&lt;br /&gt;
* Fixed an issue where pulling the list didn't refresh query results.&lt;br /&gt;
* Fixed an issue where resetting query criteria didn't update the result list.&lt;br /&gt;
* Fixed an issue where the app didn't navigate to tapped query results.&lt;br /&gt;
* Fixed an issue where items stopped responding to tapping after back navigations from queries.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.62 on 2020-09-22 ===&lt;br /&gt;
* Fixed a potential crash when going to the settings page upon app startup.&lt;br /&gt;
* Fixed an issue where the app didn’t navigate to newly created objects for property editing.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.61 on 2020-09-22 ===&lt;br /&gt;
* Fixed an app hanging issue during login on iOS14.&lt;br /&gt;
* Updated localized resources.&lt;br /&gt;
* Fixed an issue where file picking stopped working on Android X.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.59 on 2020-09-18 ===&lt;br /&gt;
* Added basic [[Time_Zone_Support_(Client)|time zone support]].&lt;br /&gt;
* Added a teach in button in the Geo property editor to easily use the device location as input.&lt;br /&gt;
* Redesigned the in-app PDF annotation feature to support basic traceability.&lt;br /&gt;
* Fixed a bug, that caused the property editing to fail in certain situations.&lt;br /&gt;
* Fixed misaligned POIs when scanning OCR codes.&lt;br /&gt;
* Reduced the memory pressure of the app when scanning is active.&lt;br /&gt;
* The map now supports displaying of shape files.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.45 on 2020-06-26 ===&lt;br /&gt;
* Supports grouping of AR markers (like for geo POI's) to overcome the limitation of the maximum 1024 unique Aruco markers.&lt;br /&gt;
* Initial implementation of the basic map feature using MapsUI (instead of Syncfusion).&lt;br /&gt;
* Fixed an issue where AR items (e.g. POIs, map pins) are not correctly updated after switching POI groups.&lt;br /&gt;
&lt;br /&gt;
=== 1.1.41 on 2020-05-04 ===&lt;br /&gt;
* Improved the AR routing feature;&lt;br /&gt;
* Fixed some issues in the AR views caused by the different screen densities;&lt;br /&gt;
* Fixed some flickering issues in the AR views;&lt;br /&gt;
* Fixed an issue where the chosen resolution is too high and leads to a poor performance and heavy stuttering in the AR views.&lt;br /&gt;
=== 1.1.36 on 2020-04-03 ===&lt;br /&gt;
* Fixed an issue where the geo POI's are horizontally mirrored when compared to their real world positions.&lt;br /&gt;
=== 1.1.35 on 2020-04-03 ===&lt;br /&gt;
* Basic Aruco Marker implementation (Landscape mode only)&lt;br /&gt;
* Basic AR Navigation implementation (Route from the Demo plant only)&lt;br /&gt;
=== 1.1.9 on 2020-02-06 ===&lt;br /&gt;
* Added scroll views in the settings page so that all entries are accessible on smaller devices.&lt;br /&gt;
* Added some missing Spanish and Portuguese translations.&lt;br /&gt;
* Enabled annotating/redlining for PDF's and images.&lt;br /&gt;
=== 1.1.8 on 2019-12-03 ===&lt;br /&gt;
* Fixed a bug where importing of XAML customizings from zip files didn't work anymore.&lt;br /&gt;
=== 1.1.7 on 2019-11-27 ===&lt;br /&gt;
* Enabled QR- and OCR-based POIs.&lt;br /&gt;
* Fixed Geo-POIs for portrait and landscape orientations.&lt;br /&gt;
=== 1.1.6 on 2019-11-14 ===&lt;br /&gt;
* Added OCR scanning in ScanPage and POI Page.&lt;br /&gt;
* Added first set of Geo AR and Maps features in POI page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
* In rare cases, a query page appears blank without list content after navigating back from another query page. In such cases, a workaround is to reopen it or pull the list area to refresh.&lt;br /&gt;
* [https://www.syncfusion.com/support/directtrac/incidents/301168 A memory leak] in general page navigation is present in this release and will be addressed soon in a patch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= XAML changes =&lt;br /&gt;
&lt;br /&gt;
== Chlld list item tap behavior ==&lt;br /&gt;
Previously, the tap behavior to navigate to child items is included by default in the &amp;lt;code&amp;gt;ContentListView&amp;lt;/code&amp;gt; style definition. Due to technical reasons, that is no longer the case.&lt;br /&gt;
&lt;br /&gt;
If you have customized certain templates before and they contain child lists, it's now necessary to enable the navigation behavior like the following.&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;
    xmlns:behaviors=&amp;quot;clr-namespace:UBIK.CPL.Behaviors;assembly=UBIK.CPL&amp;quot;&lt;br /&gt;
    xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;controls:SfListViewExt ...&lt;br /&gt;
        ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
        Style=&amp;quot;{DynamicResource ContentListView}&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;controls:SfListViewExt.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;behaviors:EventToCommandBehavior&lt;br /&gt;
                Command=&amp;quot;{Binding NavigateToChildrenCommand}&amp;quot;&lt;br /&gt;
                Converter=&amp;quot;{StaticResource ItemTappedEventArgsToViewModelConverter}&amp;quot;&lt;br /&gt;
                EventName=&amp;quot;ItemTapped&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/controls:SfListViewExt.Behaviors&amp;gt;&lt;br /&gt;
    &amp;lt;/controls:SfListViewExt&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editor templates ==&lt;br /&gt;
Previously, the property editor templates (of different types) did not include certain parts such as the header and the generic confirm/reset/cancel buttons.&lt;br /&gt;
&lt;br /&gt;
Starting from this version, you can customize the entire editor area (top app bar aside) in these templates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.1 Xamarin]]&lt;br /&gt;
[[Category:Version 1.1|Version 1.1 Xamarin]]&lt;br /&gt;
[[Category:Xamarin|Version 1.1 Xamarin]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=EditPropertyValueCommand&amp;diff=22831</id>
		<title>EditPropertyValueCommand</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=EditPropertyValueCommand&amp;diff=22831"/>
				<updated>2020-12-10T06:59:41Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: Created page with &amp;quot;== EditPropertyValueCommand == This command is used to open a dialog for editing a property.  == Command Properties == * ID: String. The ID of the property to be edited. * Sca...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EditPropertyValueCommand ==&lt;br /&gt;
This command is used to open a dialog for editing a property.&lt;br /&gt;
&lt;br /&gt;
== Command Properties ==&lt;br /&gt;
* ID: String. The ID of the property to be edited.&lt;br /&gt;
* ScanToInput: bool. If this is false (default) a textbox for editing is shown. If true, a scan dialog appears, that allows to scan a barcode.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button Command=&amp;quot;{Binding EditPropertyValueCommand}&amp;quot; Text=&amp;quot;ScanToEdit&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;ID&amp;quot; Value=&amp;quot;TEXT_READWRITE&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;ScanToInput&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.7_(WinX)&amp;diff=22768</id>
		<title>Version 3.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.7_(WinX)&amp;diff=22768"/>
				<updated>2020-11-11T13:11:01Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Build History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Initial Release =&lt;br /&gt;
&lt;br /&gt;
=== New features ===&lt;br /&gt;
* The UBIK client can now automatically use UI customizings deployed from the server. Details can be found [[Deploy_UI_Customizings_(Client)|here]].&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* [[SYSCLS_UNLOCK_GROUP_BY_SCAN|Unlock group by scan]] feature no longer locks items that don't have an UNLOCK_CODE set.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed a memory leak issue when viewing 3D models in the app.&lt;br /&gt;
* Fixed an issue where created content is not automatically committed if the navigation is skipped.&lt;br /&gt;
* Fixed an issue where unwanted values are assigned during the data/template replications.&lt;br /&gt;
* Fixed the not working template selection button in the default XAML template.&lt;br /&gt;
&lt;br /&gt;
=== Known issues ===&lt;br /&gt;
* Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.&lt;br /&gt;
* If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.&lt;br /&gt;
* The AR Marker related features are resource intense and can cause the app to slow down on weaker tablets.&lt;br /&gt;
* Sometimes after an external bluetooth RFID scanner is disconnected, the app still incorrectly recognizes it as available.&lt;br /&gt;
* It's not possible to interact with an online document in a flip view. This will be fixed in the next build. Until then, a workaround is to customize the default UBIKDetailsArea template. Find the one and only Canvas control in it and change its Visibility property value to &amp;lt;code&amp;gt;&amp;quot;{Binding DataContext.HotSpotViewModel.DocumentScanMode, ElementName=ChildFlipView, Converter={StaticResource BoolToVisConverter}, FallbackValue=Collapsed}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
* 3.7.3 on 2020-03-27&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 3.7.6 on 2020-04-16&lt;br /&gt;
** Improved the precision of remembered list view scroll positions and fixe an issue where it sometimes stops working.&lt;br /&gt;
* 3.7.10 on 2020-06-30&lt;br /&gt;
** Fixed an issue where AR items (e.g. POIs, map pins) are not correctly updated after switching POI groups.&lt;br /&gt;
** Fixed an issue where scanning sometimes does not work until toggling the scan switches.&lt;br /&gt;
** Fixed an issue where live values are sometimes not received on the clients (when the live value attributes are configured as null).&lt;br /&gt;
** Fixed an issue where users could not swipe across documents in the gallery/flipview using gestures.&lt;br /&gt;
** Fixed an issue where documents in the gallery/flipview was contantly moving slightly up and down.&lt;br /&gt;
* 3.7.11 on 2020-07-02&lt;br /&gt;
** RootPage is now fully customizable via UBIKRootArea.xml.&lt;br /&gt;
* 3.7.13 on 2020-07-07 {{key press|Internal on DevOps}}&lt;br /&gt;
** Fixed an issue where sometimes tapping on Aruco POIs is not recognized.&lt;br /&gt;
** Fixed a crash caused by a XAML compatibility issue (introduced in the last build for the &amp;quot;fully customizable UBIKRootArea&amp;quot;).&lt;br /&gt;
* 3.7.14 on 2020-07-29&lt;br /&gt;
** Fixed an issue where the client sometimes fails to unpack server deployed UI customizings. See [[Deploy UI Customizings (Client)#Known_Issues| known issues]].&lt;br /&gt;
* 3.7.15 on 2020-07-30 {{key press|Internal on DevOps}}&lt;br /&gt;
** Fixed an issue where online/linked documents in the gallery/flipview were not usable.&lt;br /&gt;
* 3.7.16 on 2020-09-23 {{key press|Internal on DevOps}}&lt;br /&gt;
** Fixed an issue where the geo editor misbehaved for newly created objects (or those without original server values).&lt;br /&gt;
** Fixed an issue where changes to geo property values were lost in offline/manual mode (after a restart of the app).&lt;br /&gt;
*3.7.x on xxx {{key press|Internal on DevOps}}&lt;br /&gt;
** Added CreateChildItemsCommand, to support uploading of multiple documents at once.&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 3.7 (WinX)]]&lt;br /&gt;
[[Category:Version 3.7|Version 3.7 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 3.7 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22767</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22767"/>
				<updated>2020-11-11T12:58:32Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Content creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;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 AutoNavigate will always be set to false (does not need to be specified) and the AutoCommit will always be set to true (also does not need to be specified). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Button&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;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
=== 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;
&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 Children.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;SelectedItemsOnly&amp;quot; Value=&amp;quot;True&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;
&lt;br /&gt;
&lt;br /&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 (ListCollectionView) in the Resources section of a UI element (e.g. Grid).&lt;br /&gt;
* This list is only available/visible within that UI element (the Grid in this case);&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;
&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;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 configured above.&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 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;
&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;
=== 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 commnad 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;&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;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;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML&amp;diff=22766</id>
		<title>XAML</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML&amp;diff=22766"/>
				<updated>2020-11-11T12:53:49Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Commands */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The WinX User Interface can be vastly customized using XAML. Starting with Version 3.2, this customizing experience can be largely controlled with the new [[Developer Mode]].&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath]\''LocalState\XAML''&lt;br /&gt;
For further information see ''[[ UBIK Templates]]''.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
* [[UBIKThemes.xaml]]&lt;br /&gt;
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.&lt;br /&gt;
&lt;br /&gt;
==== AuthenticationPage ====&lt;br /&gt;
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]&lt;br /&gt;
* [[UBIKSplashArea.xaml]]&lt;br /&gt;
* UBIKPageNavigation.xaml -&amp;gt; Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}&lt;br /&gt;
* UBIKProfileItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content Pages ===&lt;br /&gt;
* UBIKObjectIcon.xaml&lt;br /&gt;
* UBIKObjectIconSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== RootPage ====&lt;br /&gt;
[[File:MainPage.PNG|thumb|RootPage]]&lt;br /&gt;
* UBIKMainLeftArea.xaml&lt;br /&gt;
* UBIKMainItem.xaml&lt;br /&gt;
* UBIKMainItemSmall.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ChildPage ====&lt;br /&gt;
[[File:ChildPageNew.PNG|thumb|ChildPage]]&lt;br /&gt;
* UBIKChildItem.xaml&lt;br /&gt;
* UBIKChildItemSmall.xaml&lt;br /&gt;
* UBIKChildArea.xaml&lt;br /&gt;
* UBIKChildAreaSmall.xaml&lt;br /&gt;
* UBIKChildAction.xaml&lt;br /&gt;
* UBIKPriorityPropertyItem.xaml&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DetailsPage ====&lt;br /&gt;
* UBIKDocumentItem.xaml&lt;br /&gt;
* UBIKDocumentItemSmall.xaml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specific {{UBIK}} Controls ==&lt;br /&gt;
=== Basic ===&lt;br /&gt;
* CoolGridSplitter (UBIK.WinX.Controls)&lt;br /&gt;
Allows to make rows or columns of a grid user-resizable&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;uc:CoolGridSplitter&lt;br /&gt;
                x:Name=&amp;quot;ChildAreaGridSplitter&amp;quot;&lt;br /&gt;
                Height=&amp;quot;10&amp;quot;&lt;br /&gt;
                HorizontalAlignment=&amp;quot;Center&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot;&lt;br /&gt;
                Background=&amp;quot;Transparent&amp;quot;&lt;br /&gt;
                Foreground=&amp;quot;White&amp;quot;&lt;br /&gt;
                ResizeBehavior=&amp;quot;CurrentAndNext&amp;quot; ResizeDirection2=&amp;quot;Rows&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[EvalExpression]]&lt;br /&gt;
Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]&lt;br /&gt;
&lt;br /&gt;
== Converters ==&lt;br /&gt;
These are classes in our code used to convert one form of data into another (For example: string to color, bool to string, color to string…). We are using it often on Data Bindings, so we can simply ‘change’ the data that got provided by the model. Mostly, in our environment, we use the Converters for the Visibility Property, Background Property or the Source Property (converting Byte to an Image).&lt;br /&gt;
&lt;br /&gt;
Initialization of a converter in a XAML file:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;converters:ItemCountLesserThanToVisibilityConverter &lt;br /&gt;
x:Key=&amp;quot;ItemCountLesserThanToColConverter&amp;quot; &lt;br /&gt;
EqualOrBiggerThan=&amp;quot;Visible&amp;quot; &lt;br /&gt;
LesserThan=&amp;quot;Collapsed&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!-- This Converter example specifically counts the items that will go into a container (ListView etc..) and gets a parameter passed when it should be a certain visibility. Next example shows you how to configure your converter.--&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Using the ItemCountLesserThanToVisiblity in a visibility attribute:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Visibility=&amp;quot;{Binding Source={StaticResource RootListFilter}, Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;!--In this case is the parameter 13, so when it gets passed the Count gets checked e.g. how many items there are and when it’s under 13 it will collapse. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of an EqualToVisConverter being used in order to set the visibility of a grid:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;Grid Visibility=&amp;quot;{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter. --&amp;gt;      &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example of a StringFormatConverter, which converts a value into a string and also accepts a parameter, in this case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt; &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }&amp;quot;/&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== List of all converters ===&lt;br /&gt;
For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].&lt;br /&gt;
&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
* [[StringFormatConverter]]&lt;br /&gt;
Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (''Param0, Param1, Param2'').&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:StringFormatConverter x:Key=&amp;quot;URIConverter&amp;quot; Param0=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!--  Create a SearchBox that calls the typed Name via Skype on enter  --&amp;gt;&lt;br /&gt;
        &amp;lt;SearchBox&lt;br /&gt;
            x:Name=&amp;quot;SkypeQuery&amp;quot;&lt;br /&gt;
            Width=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
            FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
            PlaceholderText=&amp;quot;Call Skype&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;QuerySubmitted&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:InvokeCommandAction&lt;br /&gt;
                          Command=&amp;quot;{Binding NavigateToURICommand}&amp;quot;&lt;br /&gt;
                          CommandParameter=&amp;quot;{Binding ElementName=SkypeQuery, Path=QueryText, Converter={StaticResource URIConverter},&lt;br /&gt;
                          ConverterParameter=skype\:\{0\}\?call }&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
            &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;/SearchBox&amp;gt;&lt;br /&gt;
    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[EvalExpressionConverter]]&lt;br /&gt;
Evaluates a C# expression with 3 optional variables (''Param0, Param1, Param2'') and returns the result.  The object fed into the converter can be referenced in the expression as ''Context''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:EvalExpressionConverter x:Key=&amp;quot;CodeConverter&amp;quot; Context=&amp;quot;{Binding}&amp;quot; Param0=&amp;quot;{Binding ElementName=ChildListView, Path=Name}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                x:Name=&amp;quot;CodeQuery&amp;quot;&lt;br /&gt;
                MinWidth=&amp;quot;240&amp;quot; Height=&amp;quot;40&amp;quot;&lt;br /&gt;
                FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                PlaceholderText=&amp;quot;Expression&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;/TextBox&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBlock where we display the result of the compiled expression --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[CollectionToViewConverter]]&lt;br /&gt;
Converts a collection into a view that can be filtered using C# expressions and returns the (filtered) result. The object fed into the converter can be referenced in the expression as ''Item''.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the converter and bind the Source to the collection we want to use on a UI element of this page  --&amp;gt;&lt;br /&gt;
            &amp;lt;converters:CollectionToViewConverter x:Key=&amp;quot;ColConv&amp;quot; Source=&amp;quot;{Binding Children.Items}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Create a TextBox where we can enter a C# expression  --&amp;gt;&lt;br /&gt;
            &amp;lt;TextBox&lt;br /&gt;
                 x:Name=&amp;quot;FilterQuery&amp;quot;&lt;br /&gt;
                 Height=&amp;quot;40&amp;quot; MinWidth=&amp;quot;240&amp;quot;&lt;br /&gt;
                 Margin=&amp;quot;0,10,10,0&amp;quot; HorizontalAlignment=&amp;quot;Right&amp;quot;&lt;br /&gt;
                 VerticalAlignment=&amp;quot;Top&amp;quot;&lt;br /&gt;
                 FontSize=&amp;quot;18&amp;quot;&lt;br /&gt;
                 PlaceholderText=&amp;quot;Filter&amp;quot; /&amp;gt;&lt;br /&gt;
                 &amp;lt;!--  Create a ListView and bind its ItemsSource to the expression pulled through the converter  --&amp;gt;&lt;br /&gt;
                 &amp;lt;ListView&lt;br /&gt;
                      x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                      HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                      ItemsSource=&amp;quot;{Binding ElementName=FilterQuery, Path=Text, Converter={StaticResource ColConv}}&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[ChildItemTemplateSelectorSuffixConverter]]&lt;br /&gt;
Converts a template selector to use templates with a certain suffix (e.g. &amp;quot;_Grid&amp;quot; to use &amp;quot;UBIKChildItem_Grid.xaml&amp;quot; instead of &amp;quot;UBIKChildItem.xaml&amp;quot;). The small template file name will be combined as &amp;lt;TemplateName&amp;gt;&amp;lt;Suffix&amp;gt;Small.xaml (e.g. &amp;quot;UBIKChildItem_GridSmall.xaml&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Grid&amp;gt;&lt;br /&gt;
        &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
            &amp;lt;!--  Instantiate the template selectors and bind them to the instance of the coverter  --&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSelector x:Key=&amp;quot;ChildItemTemplateSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;tpl:ChildItemTemplateSmallSelector x:Key=&amp;quot;ChildItemTemplateSmallSelector&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;converters:ChildItemTemplateSelectorSuffixConverter x:Key=&amp;quot;ChildItemTemplateSelectorSuffixConv&amp;quot; TemplateSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSelector}}&amp;quot; TemplateSmallSelector=&amp;quot;{Binding Source={StaticResource ChildItemTemplateSmallSelector}}&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
        &amp;lt;!-- The itemselector template binds to the suffix that should be used (in this case a binding to a stored profile parameter is used to switch the item template suffix between &amp;quot;_Grid&amp;quot; and &amp;quot;_List&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StackPanel&amp;gt;&lt;br /&gt;
            &amp;lt;CheckBox Grid.Column=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Checked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- Store the Profile Variable &amp;quot;ChildItemsViewMode&amp;quot; to Grid or List - depending on the check state of the check box --&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_Grid&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                    &amp;lt;Core:EventTriggerBehavior EventName=&amp;quot;Unchecked&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Core:InvokeCommandAction Command=&amp;quot;{Binding StoreProfileParameterCommand}&amp;quot; CommandParameter=&amp;quot;ChildItemsViewMode=_List&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;/Core:EventTriggerBehavior&amp;gt;&lt;br /&gt;
                &amp;lt;/Interactivity:Interaction.Behaviors&amp;gt;&lt;br /&gt;
            &amp;lt;/CheckBox&amp;gt;&lt;br /&gt;
            &amp;lt;ListView&lt;br /&gt;
                    x:Name=&amp;quot;ChildListView&amp;quot;&lt;br /&gt;
                    HorizontalContentAlignment=&amp;quot;Stretch&amp;quot;&lt;br /&gt;
                    ItemTemplateSelector=&amp;quot;{Binding Path=StoredProfileParameters[ChildItemsViewMode], Converter={StaticResource ChildItemTemplateSelectorSuffixConv}, ConverterParameter=Normal, FallbackValue=List}&amp;quot;&lt;br /&gt;
                    ItemsPanel=&amp;quot;{StaticResource ChildPageItemsPanelTemplate}&amp;quot;&lt;br /&gt;
                    ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&lt;br /&gt;
                    ScrollViewer.VerticalScrollBarVisibility=&amp;quot;Auto&amp;quot; SelectionMode=&amp;quot;None&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                    &amp;lt;Style TargetType=&amp;quot;ListViewItem&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;HorizontalContentAlignment&amp;quot; Value=&amp;quot;Stretch&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;Setter Property=&amp;quot;Margin&amp;quot; Value=&amp;quot;0,0,16,0&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/Style&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerStyle&amp;gt;&lt;br /&gt;
                &amp;lt;ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
                    &amp;lt;TransitionCollection&amp;gt;&lt;br /&gt;
                        &amp;lt;EntranceThemeTransition FromHorizontalOffset=&amp;quot;400&amp;quot; /&amp;gt;&lt;br /&gt;
                    &amp;lt;/TransitionCollection&amp;gt;&lt;br /&gt;
                &amp;lt;/ListView.ItemContainerTransitions&amp;gt;&lt;br /&gt;
            &amp;lt;/ListView&amp;gt;&lt;br /&gt;
        &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Behaviors ==&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
* ViewModel&lt;br /&gt;
** CurrentDateTime: the current date and time&lt;br /&gt;
** UserName: the current user name&lt;br /&gt;
** Self: the viewmodel itself&lt;br /&gt;
** AppStatus: the appplication status view model&lt;br /&gt;
&lt;br /&gt;
* Content&lt;br /&gt;
** PropertyItems: Collection of all the content's PropertyItems, each accessible via a string indexer specifying the property ID.&lt;br /&gt;
** IsLocked: true, if the content islocked - false, if not&lt;br /&gt;
** IsReadOnly: true, if the content can be read only - false, if it is writeable&lt;br /&gt;
** ValueSeries: the value series, if available&lt;br /&gt;
** MROViewModel: if the content is an MRO related content, this is the sub view model for MRO&lt;br /&gt;
** GeoDataViewModel: if the content represents a geo object, this is the geo sub view model&lt;br /&gt;
** MetaDefinition: the meta definition of the content object&lt;br /&gt;
** Possible Children: collection if meta defintions the user can create new child content with&lt;br /&gt;
** ClassificationHandler: a classification handling object&lt;br /&gt;
** Content: the actual content object embedded in the viewmodel&lt;br /&gt;
** Icon: the content icon as a byte array&lt;br /&gt;
** HasIcon: true, if content object has an icon - false, if not&lt;br /&gt;
** Title: the content objects title&lt;br /&gt;
** SubTitle: the content objects sub title&lt;br /&gt;
** OrderId: the order id of the content&lt;br /&gt;
** GroupId: the group id of the content&lt;br /&gt;
** DownloadEnabled: true, if download is enabled - false, if not&lt;br /&gt;
** IsNewObject: true, if the object is created and not yet saved by the user - false, if not&lt;br /&gt;
** ToCommit: true, if the object is yet to be committed by pressing save - false, if not&lt;br /&gt;
** OfflineDate: date of the last offline download&lt;br /&gt;
** ToSave: true, if the object is yet to be saved by pressing save - false, if not&lt;br /&gt;
** ToEvaluateQuery: true, if a new query can be evaluated by pressing the sending the query&lt;br /&gt;
** ActionOverlayExpanded: true, if the action overlay is expanded - false, if not&lt;br /&gt;
** DeletionAllowed: true, if deletion of the object is allowed - false, if not&lt;br /&gt;
** RevertLocalChangesAllowed: true, if reverting the object is allowed - false, if not&lt;br /&gt;
** IsPictureChildCreationAllowed: true, if the creation of a picture child is allowed - false, if not&lt;br /&gt;
** PropertyItems: Collection of all the Content's Properties (all properties loaded when binding is triggered) - accessible via the property ID&lt;br /&gt;
&lt;br /&gt;
* GeographyList&lt;br /&gt;
** ItemsSortedByZLevel: true, if the current items are sorted by z level - false, if not&lt;br /&gt;
&lt;br /&gt;
* PolygonItem&lt;br /&gt;
** FillColor: the fill color of the polygon&lt;br /&gt;
** FillTransparency: the transparency if the polygon filling&lt;br /&gt;
&lt;br /&gt;
* MRO&lt;br /&gt;
** ProjectData&lt;br /&gt;
** ParentViewModel&lt;br /&gt;
** Progress&lt;br /&gt;
** Weight&lt;br /&gt;
** TechStatus&lt;br /&gt;
&lt;br /&gt;
* TaskOwner&lt;br /&gt;
** OrgaStatus&lt;br /&gt;
** IsConfirmed&lt;br /&gt;
&lt;br /&gt;
* Task&lt;br /&gt;
** IsBooleanTask&lt;br /&gt;
** IsInspectionTask&lt;br /&gt;
** IsProgressReportingTask&lt;br /&gt;
** IsMeasurementTask&lt;br /&gt;
** Value&lt;br /&gt;
** PropertyItem&lt;br /&gt;
** DisplayValue&lt;br /&gt;
** PreviousValue&lt;br /&gt;
** Unit&lt;br /&gt;
** NotAppliccable&lt;br /&gt;
** IsTaskFinished&lt;br /&gt;
** IsValueMIssing&lt;br /&gt;
&lt;br /&gt;
* WorkPackage&lt;br /&gt;
** WPOrgaStatus&lt;br /&gt;
** CanConfirm&lt;br /&gt;
&lt;br /&gt;
* AlternativeNonDocumentChildrenList&lt;br /&gt;
&lt;br /&gt;
* AppStatus&lt;br /&gt;
** Initializing&lt;br /&gt;
** UserAuthenticated&lt;br /&gt;
&lt;br /&gt;
* Authentication&lt;br /&gt;
** LandscapeImage&lt;br /&gt;
** PortraitImage&lt;br /&gt;
** LoginState&lt;br /&gt;
** LoginType&lt;br /&gt;
** IsLoggedIn&lt;br /&gt;
** ShowLoginButton&lt;br /&gt;
** EnableLoginButton&lt;br /&gt;
** ShowTeamLoginButton&lt;br /&gt;
** EnableTeamLoginButton&lt;br /&gt;
** ShowLogoutButton&lt;br /&gt;
** EnableLogoutButton&lt;br /&gt;
** ShowTeamLogoutButton&lt;br /&gt;
** EnableTeamLogoutButton&lt;br /&gt;
** StatusText&lt;br /&gt;
** SplashImage&lt;br /&gt;
** AppVersion&lt;br /&gt;
** SyncModes&lt;br /&gt;
** ContentServiceConfigs&lt;br /&gt;
** KeyValues&lt;br /&gt;
** Profiles&lt;br /&gt;
&lt;br /&gt;
* BuildingItem&lt;br /&gt;
** IsValidGeo&lt;br /&gt;
&lt;br /&gt;
* BuildingLevelItem&lt;br /&gt;
** IsSelected&lt;br /&gt;
** LevelName&lt;br /&gt;
** LevelShortName&lt;br /&gt;
** Index&lt;br /&gt;
** Height&lt;br /&gt;
** IsValidGeo&lt;br /&gt;
&lt;br /&gt;
* BuildingLevelList&lt;br /&gt;
** LowestLevelItem&lt;br /&gt;
** ItemsSortedByLevelDescending&lt;br /&gt;
&lt;br /&gt;
* ChangedObject&lt;br /&gt;
** IsSelected&lt;br /&gt;
&lt;br /&gt;
* ChildAppBar&lt;br /&gt;
&lt;br /&gt;
* ChildrenList&lt;br /&gt;
** Content&lt;br /&gt;
** [[Property_Based_Content_Filters|Filters]]&lt;br /&gt;
** [[Property_Based_Content_Sorting|Sorting]]&lt;br /&gt;
&lt;br /&gt;
* ContentChangeAware&lt;br /&gt;
&lt;br /&gt;
* ContentDetailsPage&lt;br /&gt;
** DocumentScanMode&lt;br /&gt;
** LastScannedText&lt;br /&gt;
** LastScannedImage&lt;br /&gt;
&lt;br /&gt;
* ContentListItem&lt;br /&gt;
** CachedPreviewDetails&lt;br /&gt;
** PreviewDetails&lt;br /&gt;
** SubDocuments&lt;br /&gt;
* ContentList&lt;br /&gt;
* ContentPageViewModel&lt;br /&gt;
* ContentSelectorDialog&lt;br /&gt;
** IsOpen&lt;br /&gt;
** SelectionText&lt;br /&gt;
** SelectedContent&lt;br /&gt;
** IsOK&lt;br /&gt;
&lt;br /&gt;
* Dialog&lt;br /&gt;
* DocumentChildrenList&lt;br /&gt;
* DocumentListItem&lt;br /&gt;
* DocumentPage&lt;br /&gt;
* EditDialog&lt;br /&gt;
* GeoContentList&lt;br /&gt;
* GlobalAppBar&lt;br /&gt;
* GlobalStatusBar&lt;br /&gt;
* ListViewModel&lt;br /&gt;
* MapGeoContentList&lt;br /&gt;
* MapOverlayItem&lt;br /&gt;
* MapOverlayList&lt;br /&gt;
* MapViewModel&lt;br /&gt;
* NonDocumentChildrenList&lt;br /&gt;
* OverlayedPOIGroupItemItem&lt;br /&gt;
* ParentBaseViewModel&lt;br /&gt;
* POIBaseViewModel&lt;br /&gt;
* POIGroupItemItem&lt;br /&gt;
* POIGroupItem&lt;br /&gt;
* POIItemViewModel&lt;br /&gt;
* POI&lt;br /&gt;
* PreviewPage&lt;br /&gt;
* PropertyListItem&lt;br /&gt;
* PropertyList&lt;br /&gt;
* QueryDetailsPage&lt;br /&gt;
* RootContentList&lt;br /&gt;
* RootPage&lt;br /&gt;
* Scan&lt;br /&gt;
* SearchResultListItem&lt;br /&gt;
* SearchResultSelection&lt;br /&gt;
* Search&lt;br /&gt;
* TeamLogin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
&lt;br /&gt;
* ViewModel&lt;br /&gt;
** [[NavigateToURICommand]]: Navigate to an URI (e.g. open a web page or a file with a known file path)&lt;br /&gt;
** [[LaunchDocumentByReferenceCommand]]: Launch a file document in an external viewer by specifying the reference property ID or the document's UID (Version 2.6.37+)&lt;br /&gt;
** [[ShowMessageBoxCommand]]: show a message box with customizable text and title (Version 2.6.37+)&lt;br /&gt;
&lt;br /&gt;
* Content&lt;br /&gt;
** [[NavigateToDetailsCommand]]&lt;br /&gt;
** [[NavigateToChildrenCommand]]&lt;br /&gt;
** [[NavigateToDocumentCommand]]&lt;br /&gt;
** [[RevertLocalChangesCommand]]&lt;br /&gt;
** [[DiscardContentCommand]]&lt;br /&gt;
** [[DeleteContentCommand]]&lt;br /&gt;
** [[SaveAndCommitCommand]]&lt;br /&gt;
** [[SetPropertyValueCommand]]&lt;br /&gt;
** [[SetPropertyValueAndValidateCommand]]&lt;br /&gt;
** [[EvaluateQueryCommand]]&lt;br /&gt;
** [[CaptureMediaCommand]]&lt;br /&gt;
** [[ShareContentCommand]]&lt;br /&gt;
** [[ExpandActionOverlayCommand]]&lt;br /&gt;
** [[StartFileEditingCommand]]&lt;br /&gt;
** [[ViewPropertyValueCommand]]&lt;br /&gt;
** [[EditPropertyValueCommand]]&lt;br /&gt;
** [[CreateChildItemCommand]]&lt;br /&gt;
** [[CreateChildItemsCommand]]&lt;br /&gt;
** [[ActivateReferenceByScanCommand]]&lt;br /&gt;
** [[ActivateReferenceCommand]]&lt;br /&gt;
** [[ContinueReferenceByScanCommand]]&lt;br /&gt;
** [[SetActiveReferenceCommand]]&lt;br /&gt;
** [[CancelReferenceCommand]]&lt;br /&gt;
** [[LaunchDocumentByReferenceCommand]]&lt;br /&gt;
&lt;br /&gt;
* GenericPropertyItem&lt;br /&gt;
** [[ShowValueRecordsCommand]]&lt;br /&gt;
&lt;br /&gt;
* ChildrenList&lt;br /&gt;
** [[SortByPropertyCommand]]&lt;br /&gt;
&lt;br /&gt;
* ContentListItem&lt;br /&gt;
** [[PreviewPropertiesCommand]]&lt;br /&gt;
** [[PreviewDocumentsCommand]]&lt;br /&gt;
** [[ShowSingleChildDocumentCommand]]&lt;br /&gt;
** [[ClearPreviewDocumentsCommand]]&lt;br /&gt;
&lt;br /&gt;
* ContentList&lt;br /&gt;
&lt;br /&gt;
* ContentPageViewModel&lt;br /&gt;
** [[BranchDownloadCommand]]&lt;br /&gt;
** [[DiscardCommand]]&lt;br /&gt;
** [[SetPropertyValueForAllChildrenCommand]]&lt;br /&gt;
&lt;br /&gt;
* ContentSelectorDialog&lt;br /&gt;
&lt;br /&gt;
* Dialog&lt;br /&gt;
&lt;br /&gt;
* DocumentChildrenList&lt;br /&gt;
&lt;br /&gt;
* DocumentListItem&lt;br /&gt;
** [[ShowDocumentCommand]]&lt;br /&gt;
** [[StartRedliningCommand]] (Version 2.6.37+)&lt;br /&gt;
&lt;br /&gt;
* DocumentPage&lt;br /&gt;
** [[StartRedliningCommand]]&lt;br /&gt;
&lt;br /&gt;
* EditDialog&lt;br /&gt;
** [[OKPressedCommand]]&lt;br /&gt;
** [[ResetPressedCommand]]&lt;br /&gt;
** [[CancelPressedCommand]]&lt;br /&gt;
** [[ChangeEditorModeCommand]]&lt;br /&gt;
&lt;br /&gt;
* GeoContentList&lt;br /&gt;
&lt;br /&gt;
* GlobalAppBar&lt;br /&gt;
&lt;br /&gt;
* GlobalStatusBar&lt;br /&gt;
&lt;br /&gt;
* ListViewModel&lt;br /&gt;
&lt;br /&gt;
* MapGeoContentList&lt;br /&gt;
&lt;br /&gt;
* MapOverlayItem&lt;br /&gt;
&lt;br /&gt;
* MapOverlayList&lt;br /&gt;
&lt;br /&gt;
* MapViewModel&lt;br /&gt;
&lt;br /&gt;
* NonDocumentChildrenList&lt;br /&gt;
&lt;br /&gt;
* OverlayedPOIGroupItemItem&lt;br /&gt;
&lt;br /&gt;
* ParentBaseViewModel&lt;br /&gt;
&lt;br /&gt;
* POIBaseViewModel&lt;br /&gt;
** [[ShowDirectionsCommand]]&lt;br /&gt;
** [[ShowDrivingDirectionsCommand]]&lt;br /&gt;
** [[ShowWalkingDirectionsCommand]]&lt;br /&gt;
** [[UseGeoPositionCommand]]&lt;br /&gt;
** [[NavigateToContentCommand]]&lt;br /&gt;
** [[OpenPOIGroupCommand]]&lt;br /&gt;
** [[ExitPOIGroupCommand]]&lt;br /&gt;
** [[EnterBuildingCommand]]&lt;br /&gt;
&lt;br /&gt;
* POIGroupItemItem&lt;br /&gt;
&lt;br /&gt;
* POIGroupItem&lt;br /&gt;
&lt;br /&gt;
* POIItemViewModel&lt;br /&gt;
** [[RefreshCommand]]&lt;br /&gt;
&lt;br /&gt;
* POI&lt;br /&gt;
&lt;br /&gt;
* PreviewPage&lt;br /&gt;
** [[ReloadChildListCommand]]&lt;br /&gt;
&lt;br /&gt;
* PropertyListItem&lt;br /&gt;
** [[ViewPropertyValueCommand]]&lt;br /&gt;
** [[PropertyClickedCommand]]&lt;br /&gt;
** [[PropertyRightClickedCommand]]&lt;br /&gt;
** [[PriorityPropertyClickedCommand]]&lt;br /&gt;
** [[PriorityPropertyRightClickedCommand]]&lt;br /&gt;
&lt;br /&gt;
* PropertyList&lt;br /&gt;
&lt;br /&gt;
* QueryDetailsPage&lt;br /&gt;
&lt;br /&gt;
* RootContentList&lt;br /&gt;
&lt;br /&gt;
* RootPage&lt;br /&gt;
&lt;br /&gt;
* Scan&lt;br /&gt;
&lt;br /&gt;
* SearchResultListItem&lt;br /&gt;
&lt;br /&gt;
* SearchResultSelection&lt;br /&gt;
&lt;br /&gt;
* Search&lt;br /&gt;
&lt;br /&gt;
* TeamLogin&lt;br /&gt;
** [[AddMemberCommand]]&lt;br /&gt;
** [[DeleteMemberCommand]]&lt;br /&gt;
** [[TeamLoginCommand]]&lt;br /&gt;
** [[CloseDialogCommand]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WinX|XAML]]&lt;br /&gt;
&lt;br /&gt;
== Differences between Xamarin and UWP ==&lt;br /&gt;
&lt;br /&gt;
As you maybe already noticed we have two different clients, one is WinX UWP and the other one Xamarin, which is used to develop clients for three different platforms namely iOS, Android and new UWP (-&amp;gt; it doesn’t really differentiate from the previously mentioned UWP except it’s developed in a different framework which is Xamarin in this case). The customizing stays the same in case of the syntax, but there are some differences in the naming of controls and attributes. Unfortunately, there is no decent documentation of these differences, but the Microsoft documentation and in general the internet can support you when searching e.g. for a control in Xamarin that you used in UWP.&lt;br /&gt;
More specific documentations about Xamarin Customizing can be found under [[Xamarin XAML]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Namespace changes ==&lt;br /&gt;
 &lt;br /&gt;
Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured &amp;amp; renamed some of our outdated or inaccurate namespaces. This means modifications are necessary for any previous XAML customizing code that refers to these changed namespaces. The complete list of such changes is documented below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! !!style=&amp;quot;text-align:left;&amp;quot;|V.2.6!!style=&amp;quot;text-align:left;&amp;quot;|V.3.0&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;13&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|Name-&amp;lt;br/&amp;gt;space&amp;lt;br/&amp;gt;prefix&lt;br /&gt;
|''UBIK.Win8''||''UBIK.WinX''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.UI''||''UBIK.UI''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Utility''||''UBIK.Utility''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.Library''||''UBIK.Library''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''&lt;br /&gt;
|-&lt;br /&gt;
|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.MRO''||''UBIK.MRO''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Coding''||''UBIK.Coding''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.DataService''||''UBIK.DataService''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Redlining''||''UBIK.Redlining''&lt;br /&gt;
|-&lt;br /&gt;
| ''UBIK.WinX.Positioning''||''UBIK.Positioning''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.&lt;br /&gt;
* ''using:UBIK.Win8.Views'' -&amp;gt; ''using:UBIK.WinX.Views''&lt;br /&gt;
* ''using:UBIK.Win8.GART.Controls'' -&amp;gt; ''using:UBIK.WinX.GART.Controls''&lt;br /&gt;
&lt;br /&gt;
'''Important notes''' on the namespace ''UBIK.WinX.UI'':&lt;br /&gt;
* One exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.&lt;br /&gt;
* For namespaces that are changed from ''UBIK.Win8.UI'' such as '''''UBIK.Win8.UI.Controls''''', '''do not''' further '''remove the ''WinX''''' segment even though the results are something like '''''UBIK.WinX.UI.Controls'''''.&lt;br /&gt;
&lt;br /&gt;
== Further information regarding XAML ==&lt;br /&gt;
* [[Developer Mode]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Xamarin XAML]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Basics]] &amp;lt;br&amp;gt;&lt;br /&gt;
* [[XAML Best practices]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WinX|XAML]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22545</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22545"/>
				<updated>2020-07-29T12:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Invoke on selected items */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;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 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;
&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;
&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;
=== 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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
&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 Children.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;SelectedItemsOnly&amp;quot; Value=&amp;quot;True&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;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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 (ListCollectionView) in the Resources section of a UI element (e.g. Grid).&lt;br /&gt;
* This list is only available/visible within that UI element (the Grid in this case);&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;
&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;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 configured above.&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 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;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
=== 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 commnad 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;&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;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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22544</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22544"/>
				<updated>2020-07-29T12:42:05Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Hotspotting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;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 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;
&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;
&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;
=== 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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
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;
&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 Children.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;SelectedItemsOnly&amp;quot; Value=&amp;quot;True&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;
&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 (ListCollectionView) in the Resources section of a UI element (e.g. Grid).&lt;br /&gt;
* This list is only available/visible within that UI element (the Grid in this case);&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;
&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;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 configured above.&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 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;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
=== 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 commnad 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;&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;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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22543</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22543"/>
				<updated>2020-07-29T12:38:57Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Invoke on filtered results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;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 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;
&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;
&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;
=== Hotspotting ===&lt;br /&gt;
&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;
=== 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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
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;
&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 Children.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;SelectedItemsOnly&amp;quot; Value=&amp;quot;True&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;
&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 (ListCollectionView) in the Resources section of a UI element (e.g. Grid).&lt;br /&gt;
* This list is only available/visible within that UI element (the Grid in this case);&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;
&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;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 configured above.&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 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;
&lt;br /&gt;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
=== 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 commnad 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;&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;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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22542</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=22542"/>
				<updated>2020-07-29T12:38:36Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* SetPropertyValueCommand {{Version/WinXSince|3.6}} */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;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 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;
&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;
&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;
=== Hotspotting ===&lt;br /&gt;
&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;
=== 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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&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;
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;
&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 Children.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;SelectedItemsOnly&amp;quot; Value=&amp;quot;True&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;
&lt;br /&gt;
==== Invoke on filtered results ====&lt;br /&gt;
First, you need to setup a filtered list (ListCollectionView) in the Resources section of a UI element (e.g. Grid).&lt;br /&gt;
* This list is only available/visible within that UI element (the Grid in this case);&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;
&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;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 configured above.&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 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;
&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;
=== 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 commnad 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;&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;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;
[[Category:Client|XAML Tips]]&lt;br /&gt;
[[Category:WinX|XAML Tips]]&lt;br /&gt;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=KeyValueList&amp;diff=22541</id>
		<title>KeyValueList</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=KeyValueList&amp;diff=22541"/>
				<updated>2020-07-29T12:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{XAMLControlInfoBox&lt;br /&gt;
| title = {{PAGENAME}}&lt;br /&gt;
| name = {{PAGENAME}}&lt;br /&gt;
| namespace= UBIK.WinX.Controls&lt;br /&gt;
| image = [[File:SY_{{PAGENAME}}.png|220px]]&lt;br /&gt;
| imagecaption = imagecaption&lt;br /&gt;
| purpose = Define a complex parameter type in XAML&lt;br /&gt;
| version = 3.5+&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The KeyValueList controls allows to declare a complex parameter type from within XAML markup. It can hold any number of KeyValueParameter elements, where each consists of a string Key and and associated value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
The following example shows how to use the control with two parameters in conjunction with the NavigateToGuidCommand. The first parameter specifies the Guid of the target document and the second parameter specifies the HotSpot that should be highlighted on that very document. This example needs a namespace declaration ''xmlns:ctrls=&amp;quot;using:UBIK.WinX.Controls&amp;quot;''&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Button Command=&amp;quot;{Binding NavigateToGuidCommand}&amp;quot; Content=&amp;quot;Test&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
            &amp;lt;ctrls:KeyValueList&amp;gt;&lt;br /&gt;
                &amp;lt;ctrls:KeyValueParameter Key=&amp;quot;Guid&amp;quot; Value=&amp;quot;c9ad0e93-395a-4b4e-a526-fb5d5e42f8ff&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;ctrls:KeyValueParameter Key=&amp;quot;HotSpot&amp;quot; Value=&amp;quot;b9e855f9-d3be-4b60-b4e3-19398f5925b5&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/ctrls: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;
'''To use a Binding in the KeyValueParameter, the following logic has to be used, instead of applying the binding directly on the Value property'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&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;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|KeyValueList]]&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
KeyValueParameter can be added as child objects to an KeyValueList control. Each parameter object needs a unique ''Key'' and a ''Value'', where the latter can be either a constant or dynamic value supplied through a binding.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[XAML]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|KeyValueList]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.7_(WinX)&amp;diff=22483</id>
		<title>Version 3.7 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.7_(WinX)&amp;diff=22483"/>
				<updated>2020-06-30T09:48:03Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Build History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Initial Release =&lt;br /&gt;
&lt;br /&gt;
=== New features ===&lt;br /&gt;
* The UBIK client can now automatically use UI customizings deployed from the server. Details can be found [[Deploy_UI_Customizings_(Client)|here]].&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* [[SYSCLS_UNLOCK_GROUP_BY_SCAN|Unlock group by scan]] feature no longer locks items that don't have an UNLOCK_CODE set.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed a memory leak issue when viewing 3D models in the app.&lt;br /&gt;
* Fixed an issue where created content is not automatically committed if the navigation is skipped.&lt;br /&gt;
* Fixed an issue where unwanted values are assigned during the data/template replications.&lt;br /&gt;
* Fixed the not working template selection button in the default XAML template.&lt;br /&gt;
&lt;br /&gt;
=== Known issues ===&lt;br /&gt;
* Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.&lt;br /&gt;
* If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.&lt;br /&gt;
* The AR Marker related features are resource intense and can cause the app to slow down on weaker tablets.&lt;br /&gt;
* Sometimes after an external bluetooth RFID scanner is disconnected, the app still incorrectly recognizes it as available.&lt;br /&gt;
* It's not possible to interact with an online document in a flip view. This will be fixed in the next build. Until then, a workaround is to customize the default UBIKDetailsArea template. Find the one and only Canvas control in it and change its Visibility property value to &amp;lt;code&amp;gt;&amp;quot;{Binding DataContext.HotSpotViewModel.DocumentScanMode, ElementName=ChildFlipView, Converter={StaticResource BoolToVisConverter}, FallbackValue=Collapsed}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
* 3.7.3 on 2020-03-27&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 3.7.6 on 2020-04-16&lt;br /&gt;
** Improved the precision of remembered list view scroll positions and fixe an issue where it sometimes stops working.&lt;br /&gt;
* 3.7.10 on 2020-06-30&lt;br /&gt;
** Fixed an issue where AR items (e.g. POIs, map pins) are not correctly updated after switching POI groups.&lt;br /&gt;
** Fixed an issue where scanning sometimes does not work until toggling the scan switches.&lt;br /&gt;
** Fixed an issue where live values are sometimes not received on the clients (when the live value attributes are configured as null).&lt;br /&gt;
** Fixed an issue where users could not swipe across documents in the gallery/flipview using gestures.&lt;br /&gt;
** Fixed an issue where documents in the gallery/flipview was contantly moving slightly up and down.&lt;br /&gt;
* 3.7.11 on 2020-07-30&lt;br /&gt;
** RootPage is now fully customizable via UBIKRootArea.xml&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 3.7 (WinX)]]&lt;br /&gt;
[[Category:Version 3.7|Version 3.7 (WinX)]]&lt;br /&gt;
[[Category:WinX|Version 3.7 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Mobile_XAML&amp;diff=22313</id>
		<title>Mobile XAML</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Mobile_XAML&amp;diff=22313"/>
				<updated>2020-04-14T09:33:54Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* SfListViewExt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The User Interface of the Xamarin Clients (Android, iOS, new UWP) can be fundamentally customized using custom XAML definitions. This customization process is heavily influenced by the [[XAML|XAML Customization Process on the WinX Client]].&lt;br /&gt;
&lt;br /&gt;
= Basics =&lt;br /&gt;
There are predefined XAML templates available that can be customized. If no customizing is found, the default templates will be used.&lt;br /&gt;
&lt;br /&gt;
== Default XAMLs ==&lt;br /&gt;
All default XAML templates that can be customized are available through the Xamarin.UWP client. You need to go to the app settings and click the &amp;quot;Unpack default XAMLs&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
== Differences to WinX/UWP ==&lt;br /&gt;
* Since it's based on the Xamarin XAML dialect, you CANNOT use any existing XAML customizings for the WinX/UWP app;&lt;br /&gt;
* Namespace definitions must include the corresponding assembly names;&lt;br /&gt;
* XAML template files have the extension name of '''xamlx''' instead of '''xaml''';&lt;br /&gt;
* You can deploy only those resources that you want to customize. (This is also the case for newer versions of WinX/UWP. {{Version/WinXSince|3.6}})&lt;br /&gt;
&lt;br /&gt;
= Overriding default XAMLs=&lt;br /&gt;
On Windows (WinX/UWP), the &amp;lt;code&amp;gt;[App Package Folder]/LocalState/xaml/&amp;lt;/code&amp;gt; folder can be accessed by the user and the customized XAML files directly added. An alternative to this on all platforms (including Android, iOS, etc.) is to use the ''Import Customizing'' button in the app settings to import the templates, styles, images, etc. (file by file, or all files within a zip package). The changes should be reflected in the UI (except the current page) without restarting the app. After directly editing the customizings (Xamarin.UWP), you can also use the &amp;quot;Reload customizing&amp;quot; button without restarting the app.&lt;br /&gt;
&lt;br /&gt;
In the following, we're going to override the default light theme color of the app:&lt;br /&gt;
* Unpack the default XAMLs;&lt;br /&gt;
* Pick and deploy the default UBIKThemes.xamlx to the '''xaml''' folder inside the ''LocalState'' folder;&lt;br /&gt;
* Open it with the text editor of your choice and remove everything within the '''ResouceDictionary''' except &amp;lt;code&amp;gt;&amp;lt;Color x:Key=&amp;quot;UBIKLightThemeColor&amp;quot;&amp;gt;blue&amp;lt;/Color&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Save the changes and reload. You should see changes successfully implemented.&lt;br /&gt;
&lt;br /&gt;
{{Attention| For maintainability reasons, it's HIGHLY recommended to deploy only those XAML resources you want to override. For example, if you only want to customize the UBIKChildArea, don't deploy others like the UBIKMenuArea. If you only want to customize the UBIKChildItem, that's the only content you should include in the UBIKThemes.}}&lt;br /&gt;
&lt;br /&gt;
== Custom Templates ==&lt;br /&gt;
Custom templates can be added, just like on the WinX/UWP client. Make sure to include all '''namespace definitions''' (as attributes of the '''ContentView''' tag), otherwise the custom template will not load.&lt;br /&gt;
&lt;br /&gt;
Similar to the ''UBIKThemes.xamlx'' file, custom or overridden templates start with a &amp;lt;code&amp;gt;&amp;lt;ContentView&amp;gt;&amp;lt;/code&amp;gt; tag containing all '''namespaces'''. &amp;lt;code&amp;gt;&amp;lt;ContentView.Resources&amp;gt;&amp;lt;/code&amp;gt; takes a '''ResourceDictionary''' and contains resources like references to converters. Finally, &amp;lt;code&amp;gt;&amp;lt;ContentView.Content&amp;gt;&amp;lt;/code&amp;gt; contains the actual layout content (it's best to start with a '''Grid'''). Again, don't forget to add namespaces that you need!&lt;br /&gt;
&lt;br /&gt;
Templates can also be defined in ''UBIKThemes.xamlx''. In this case, they need to be added into the &amp;lt;code&amp;gt;&amp;lt;ResourceDictionary&amp;gt;&amp;lt;/code&amp;gt; inside the &amp;lt;code&amp;gt;&amp;lt;ContentView.Resources&amp;gt;&amp;lt;/code&amp;gt; template as a &amp;lt;code&amp;gt;&amp;lt;DataTemplate&amp;gt;&amp;lt;/code&amp;gt;. Similarly, if you want to split up the templates into seperate files, you need to make sure to follow the steps mentioned above and get the content of the &amp;lt;code&amp;gt;&amp;lt;DataTemplate&amp;gt;&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;&amp;lt;ContentView.Content&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Templates defined in separate files will override templates defined in the ''UBIKThemes.xamlx''!}}&lt;br /&gt;
&lt;br /&gt;
== Adding Images ==&lt;br /&gt;
Images can't be loaded with the default '''Image''' tag, as the image is on different paths on each operating system.&lt;br /&gt;
&lt;br /&gt;
Therefore, there's a custom '''FileImage''' that internally overrides the default ''Image'' with two custom parameters:&lt;br /&gt;
* '''FolderName''' ...The name of the '''folder''' in the '''local folder'''. Only the first level inside the ''LocalState'' folder seems to work.&lt;br /&gt;
* '''FileName''' ...The name of the '''file''' in the said folder. &lt;br /&gt;
&lt;br /&gt;
Make sure to implement the proper namespace as well by adding&lt;br /&gt;
&amp;lt;code&amp;gt;xmlns:fimage=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;lt;/code&amp;gt; into the root item's attributes.&lt;br /&gt;
&lt;br /&gt;
Then, the image can be loaded using:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;fimage:FileImage FileName=&amp;quot;image.png&amp;quot; FolderName=&amp;quot;xaml&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This snipped loads the image called '''image.png''' located in the '''xaml''' folder inside the ''LocalState''.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the ''FileImage'' tag doesn't seem to support most attributes. Therefore place it inside a '''Grid''' to achieve a perfect layout.&lt;br /&gt;
&lt;br /&gt;
== Converters==&lt;br /&gt;
:''Main Page: [[Converters_In_Xamarin]]''&lt;br /&gt;
&lt;br /&gt;
They are used to convert specific data into some desired output, using custom logic. &lt;br /&gt;
&lt;br /&gt;
Consider the following example:&amp;lt;br/&amp;gt;&lt;br /&gt;
A label saying ''There are no children items available!'' should only be visible if the number of children-items is 0.&lt;br /&gt;
&lt;br /&gt;
= Advanced =&lt;br /&gt;
&lt;br /&gt;
== Feature related ==&lt;br /&gt;
&lt;br /&gt;
=== Content filtering ===&lt;br /&gt;
For the Xamarin clients, an &amp;quot;SfDataSourceExt&amp;quot; type is available for filtering list of items using defined expressions.&amp;lt;br /&amp;gt;&lt;br /&gt;
The following example demonstrates how to filter for child items having certain property values. The filtered list and its count can be displayed in the UI.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight 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.Values[&amp;amp;quot;MP_YEAR&amp;amp;quot;].Contains(&amp;amp;quot;2019&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt  x:Key=&amp;quot;FilteredList&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; Unloaded=&amp;quot;{Binding SkipFiltering}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
    &amp;lt;StackLayout Orientation=&amp;quot;Vertical&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Label Text=&amp;quot;{Binding DisplayItemsCount, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;controls:SfListViewExt ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/StackLayout&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&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;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
In the default UBIKMenuArea.xamlx (where the search UI is hosted), there are two commands associated with two events. See below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SearchBar ...&amp;gt;&lt;br /&gt;
    &amp;lt;SearchBar.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;behaviors:EventToCommandBehavior&lt;br /&gt;
            Command=&amp;quot;{Binding FreeTextSearchCommand}&amp;quot;&lt;br /&gt;
            CommandParameter=&amp;quot;{Binding Path=Text, Source={x:Reference SearchField}}&amp;quot;&lt;br /&gt;
            EventName=&amp;quot;SearchButtonPressed&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;behaviors:EventToCommandBehavior Command=&amp;quot;{Binding DelayedFreeTextSearchCommand}&amp;quot; EventName=&amp;quot;TextChanged&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/SearchBar.Behaviors&amp;gt;&lt;br /&gt;
&amp;lt;/SearchBar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The one for &amp;lt;code&amp;gt;SearchButtonPressed&amp;lt;/code&amp;gt; is responsible for executing searches after the user confirms the input (e.g. pressing {{{keypress|Enter}}} or the search button).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The one for &amp;lt;code&amp;gt;TextChanged&amp;lt;/code&amp;gt; is responsible for the &amp;quot;search as you type&amp;quot; behavior. Namely it triggers an automatic search shortly (half second) after the user stops changing the text in the search bar. It can be turned off by simply removing that particular behavior.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
To get a good performance in the app UI when using your Xaml customizings, it is recommended to try the following.&lt;br /&gt;
* Always keep your UI structure simple. Choose the most efficient layouts for the scenarios and avoid unnecessary UI elements. Please refer to [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/performance#choose-the-correct-layout &amp;quot;choose the correct layout&amp;quot;] and [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/performance#reduce-the-visual-tree-size &amp;quot;reduce the visual tree size&amp;quot;];&lt;br /&gt;
* Turn on [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/layout-compression layout compression] on wrapping elements that don't have any visual parameters set (reasons stated in the linked documentation).&lt;br /&gt;
{{Hint|There is a default &amp;quot;HeadlessLayout&amp;quot; style available in the app you can use on elements such as Grids, StackLayouts, ContentViews, etc. It turns on layout compression on the applied elements in Xamarin.Android (since we find it not worth the effort in Xamarin.iOS).}}&lt;br /&gt;
{{Attention|If possible, one should always favor designing the UI with less wrapping elements over turning on layout compression on unnecessary ones.}}&lt;br /&gt;
&lt;br /&gt;
=== Layout compression examples ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView ControlTemplate=&amp;quot;{DynamicResource ChangedSymbol}&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code above removes one wrapping element added automatically by the ContentView and demonstrates a good reason to use layout compression because it can not be avoided otherwise.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid Margin=&amp;quot;2&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Label Margin=&amp;quot;5&amp;quot; Text=&amp;quot;{Binding Title}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This example, on the other hand, demonstrates a bad usage of layout compression because it can be easily achieved by better designs such as using only the Label with a merged margin.&lt;br /&gt;
&lt;br /&gt;
Sometimes the content inside a compressed layout appears on a wrong z-index level. For eample:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BoxView CornerRadius=&amp;quot;14&amp;quot; HeightRequest=&amp;quot;28&amp;quot; WidthRequest=&amp;quot;28&amp;quot; Color=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;ContentView ControlTemplate=&amp;quot;{DynamicResource Badge}&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Label Text=&amp;quot;{Binding Title}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView &amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
According to the order of the BoxView and the Label, the latter should appear on top of the former (later ones have higher z-index levels). However, this can be disturbed by layout compression, causing the exact opposite.&lt;br /&gt;
In this case, you can add a &amp;lt;code&amp;gt;xmlns:android=&amp;quot;clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core&amp;quot;&amp;lt;/code&amp;gt; namespace to your Xaml file and manually elevate the Label by specifying &amp;lt;code&amp;gt;android:VisualElement.Elevation=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; on it accordingly (X is the delta of the z-index level you want).&lt;br /&gt;
&lt;br /&gt;
=== SfListViewExt ===&lt;br /&gt;
For performance reasons, we created an extended version of the Syncfusion SfListView control and it should be used for all lists in customizings. You need to add a namespace like &amp;lt;code&amp;gt;xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;lt;/code&amp;gt; to your Xaml file and use it like &amp;lt;code&amp;gt;&amp;lt;controls:SfListViewExt ... /&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
{{Hint|Technically speaking, SfListViewExt informs item view models when their corresponding item views appear on / disappear from the screen. This way, view models can skip a lot of unnecessary work (on the UI) when their views are not visible. '''If SfListView is used instead, the item views will not reflect content changes until the page is reloaded/refreshed.'''}}&lt;br /&gt;
&lt;br /&gt;
It is possible to configure the ListView, that the ScrollPosition is remembered when navigating away from the page, to do so, the property RembemberScrollPosition needs to be set to true:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;controls:SfListViewExt RememberScrollPosition=&amp;quot;True&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using multiple Lists on one page (e.g. in a TabbedView), it is necessary to set the AutomationId property uniquely for each list on the page, to support the remembering of the ScrollPosition.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Xamarin XAML]]&lt;br /&gt;
[[Category:Pages with broken file links|Xamarin XAML]]&lt;br /&gt;
[[Category:Styling|Xamarin XAML]]&lt;br /&gt;
[[Category:Xamarin|Xamarin XAML]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.Android)&amp;diff=22148</id>
		<title>Version 1.0 (Xamarin.Android)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.Android)&amp;diff=22148"/>
				<updated>2020-03-24T10:21:49Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Build history */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release notes =&lt;br /&gt;
Initial release (1.0) of the Xamarin.Android app.&lt;br /&gt;
* It's available in the Google Play Store ([https://play.google.com/store/apps/details?id=com.augmensys.ubik link]).&lt;br /&gt;
* If subscribed in our App Center distribution channel, you can also download through email notifications.&lt;br /&gt;
&lt;br /&gt;
== Build history ==&lt;br /&gt;
* 1.0.69 on 2019-10-21&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 1.0.71 on 2019-10-28&lt;br /&gt;
** Syncfusion chart control (https://help.syncfusion.com/xamarin/sfchart/getting-started#initialize-chart) can now be used in XAML customizings;&lt;br /&gt;
** Added confirmation before deleting XAML customizings;&lt;br /&gt;
** Fixed an issue where the progress bar was not shown on workpackages.&lt;br /&gt;
* 1.0.72 on 2019-10-29&lt;br /&gt;
** Improved the stability of the client;&lt;br /&gt;
** In case of errors in XAML customizings, the client now provides more useful information (e.g. name of the customizing, line number, error) for easy trouble-shooting;&lt;br /&gt;
** Fixed an issue where lists were often missing an item (the first one) after applying filters.&lt;br /&gt;
* 1.0.73 on 2019-11-04&lt;br /&gt;
** Fixed an issue where importing customizings didn't work on some devices;&lt;br /&gt;
** Fixed an issue where content filtering stopped working on the root page after navigating back.&lt;br /&gt;
* 1.0.74 on 2019-11-13&lt;br /&gt;
** Fixed an issue where the configurable content filtering sometimes stops working.&lt;br /&gt;
* 1.0.76 on 2020-03-23&lt;br /&gt;
** Added RememberScrollPosition property to [[Xamarin_XAML#SfListViewExt|SfListViewExt]] control&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
[[Category:Version 1.0|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
[[Category:Xamarin|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
&lt;br /&gt;
= XAML =&lt;br /&gt;
[[Xamarin_XAML|Some basic information]] to get you started on the XAML customizing topic.&lt;br /&gt;
&lt;br /&gt;
To stop the re-evaluation of not needed filters, the SfDataSourceExt has a Property &amp;quot;Unloaded&amp;quot; which stops the filtering if set to true. For details see: [https://wiki.augmensys.com/index.php?title=Xamarin_XAML#Content_filtering]. This increases the performance of filtered lists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
[[Category:Version 1.0|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
[[Category:Xamarin|Version 1.0 (Xamarin.Android)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.iOS)&amp;diff=22147</id>
		<title>Version 1.0 (Xamarin.iOS)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.iOS)&amp;diff=22147"/>
				<updated>2020-03-24T10:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Build history */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release notes =&lt;br /&gt;
Initial release (1.0) of the Xamarin.iOS app.&lt;br /&gt;
* It's available in the Apple App Store.&lt;br /&gt;
* If subscribed in our App Center distribution channel, you can also download through email notifications.&lt;br /&gt;
&lt;br /&gt;
== Build history ==&lt;br /&gt;
* 1.0.73 on 2019-11-04&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 1.0.74 on 2019-11-13&lt;br /&gt;
** Fixed an issue where the configurable content filtering sometimes stops working;&lt;br /&gt;
** Improved app stability.&lt;br /&gt;
* 1.0.76 on 2020-03-23&lt;br /&gt;
** Added RememberScrollPosition property to [[Xamarin_XAML#SfListViewExt|SfListViewExt]] control&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
[[Category:Version 1.0|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
[[Category:Xamarin|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
&lt;br /&gt;
= XAML =&lt;br /&gt;
[[Xamarin_XAML|Some basic information]] to get you started on the XAML customizing topic.&lt;br /&gt;
&lt;br /&gt;
To stop the re-evaluation of not needed filters, the SfDataSourceExt has a Property &amp;quot;Unloaded&amp;quot; which stops the filtering if set to true. For details see: [https://wiki.augmensys.com/index.php?title=Xamarin_XAML#Content_filtering]. This increases the performance of filtered lists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
[[Category:Version 1.0|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
[[Category:Xamarin|Version 1.0 (Xamarin.iOS)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Mobile_XAML&amp;diff=22146</id>
		<title>Mobile XAML</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Mobile_XAML&amp;diff=22146"/>
				<updated>2020-03-24T10:18:40Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* SfListViewExt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The User Interface of the Xamarin Clients (Android, iOS, new UWP) can be fundamentally customized using custom XAML definitions. This customization process is heavily influenced by the [[XAML|XAML Customization Process on the WinX Client]].&lt;br /&gt;
&lt;br /&gt;
= Basics =&lt;br /&gt;
There are predefined XAML templates available that can be customized. If no customizing is found, the default templates will be used.&lt;br /&gt;
&lt;br /&gt;
== Default XAMLs ==&lt;br /&gt;
All default XAML templates that can be customized are available through the Xamarin.UWP client. You need to go to the app settings and click the &amp;quot;Unpack default XAMLs&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
== Differences to WinX/UWP ==&lt;br /&gt;
* Since it's based on the Xamarin XAML dialect, you CANNOT use any existing XAML customizings for the WinX/UWP app;&lt;br /&gt;
* Namespace definitions must include the corresponding assembly names;&lt;br /&gt;
* XAML template files have the extension name of '''xamlx''' instead of '''xaml''';&lt;br /&gt;
* You can deploy only those resources that you want to customize. (This is also the case for newer versions of WinX/UWP. {{Version/WinXSince|3.6}})&lt;br /&gt;
&lt;br /&gt;
= Overriding default XAMLs=&lt;br /&gt;
On Windows (WinX/UWP), the &amp;lt;code&amp;gt;[App Package Folder]/LocalState/xaml/&amp;lt;/code&amp;gt; folder can be accessed by the user and the customized XAML files directly added. An alternative to this on all platforms (including Android, iOS, etc.) is to use the ''Import Customizing'' button in the app settings to import the templates, styles, images, etc. (file by file, or all files within a zip package). The changes should be reflected in the UI (except the current page) without restarting the app. After directly editing the customizings (Xamarin.UWP), you can also use the &amp;quot;Reload customizing&amp;quot; button without restarting the app.&lt;br /&gt;
&lt;br /&gt;
In the following, we're going to override the default light theme color of the app:&lt;br /&gt;
* Unpack the default XAMLs;&lt;br /&gt;
* Pick and deploy the default UBIKThemes.xamlx to the '''xaml''' folder inside the ''LocalState'' folder;&lt;br /&gt;
* Open it with the text editor of your choice and remove everything within the '''ResouceDictionary''' except &amp;lt;code&amp;gt;&amp;lt;Color x:Key=&amp;quot;UBIKLightThemeColor&amp;quot;&amp;gt;blue&amp;lt;/Color&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Save the changes and reload. You should see changes successfully implemented.&lt;br /&gt;
&lt;br /&gt;
{{Attention| For maintainability reasons, it's HIGHLY recommended to deploy only those XAML resources you want to override. For example, if you only want to customize the UBIKChildArea, don't deploy others like the UBIKMenuArea. If you only want to customize the UBIKChildItem, that's the only content you should include in the UBIKThemes.}}&lt;br /&gt;
&lt;br /&gt;
== Custom Templates ==&lt;br /&gt;
Custom templates can be added, just like on the WinX/UWP client. Make sure to include all '''namespace definitions''' (as attributes of the '''ContentView''' tag), otherwise the custom template will not load.&lt;br /&gt;
&lt;br /&gt;
Similar to the ''UBIKThemes.xamlx'' file, custom or overridden templates start with a &amp;lt;code&amp;gt;&amp;lt;ContentView&amp;gt;&amp;lt;/code&amp;gt; tag containing all '''namespaces'''. &amp;lt;code&amp;gt;&amp;lt;ContentView.Resources&amp;gt;&amp;lt;/code&amp;gt; takes a '''ResourceDictionary''' and contains resources like references to converters. Finally, &amp;lt;code&amp;gt;&amp;lt;ContentView.Content&amp;gt;&amp;lt;/code&amp;gt; contains the actual layout content (it's best to start with a '''Grid'''). Again, don't forget to add namespaces that you need!&lt;br /&gt;
&lt;br /&gt;
Templates can also be defined in ''UBIKThemes.xamlx''. In this case, they need to be added into the &amp;lt;code&amp;gt;&amp;lt;ResourceDictionary&amp;gt;&amp;lt;/code&amp;gt; inside the &amp;lt;code&amp;gt;&amp;lt;ContentView.Resources&amp;gt;&amp;lt;/code&amp;gt; template as a &amp;lt;code&amp;gt;&amp;lt;DataTemplate&amp;gt;&amp;lt;/code&amp;gt;. Similarly, if you want to split up the templates into seperate files, you need to make sure to follow the steps mentioned above and get the content of the &amp;lt;code&amp;gt;&amp;lt;DataTemplate&amp;gt;&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;&amp;lt;ContentView.Content&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Templates defined in separate files will override templates defined in the ''UBIKThemes.xamlx''!}}&lt;br /&gt;
&lt;br /&gt;
== Adding Images ==&lt;br /&gt;
Images can't be loaded with the default '''Image''' tag, as the image is on different paths on each operating system.&lt;br /&gt;
&lt;br /&gt;
Therefore, there's a custom '''FileImage''' that internally overrides the default ''Image'' with two custom parameters:&lt;br /&gt;
* '''FolderName''' ...The name of the '''folder''' in the '''local folder'''. Only the first level inside the ''LocalState'' folder seems to work.&lt;br /&gt;
* '''FileName''' ...The name of the '''file''' in the said folder. &lt;br /&gt;
&lt;br /&gt;
Make sure to implement the proper namespace as well by adding&lt;br /&gt;
&amp;lt;code&amp;gt;xmlns:fimage=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;lt;/code&amp;gt; into the root item's attributes.&lt;br /&gt;
&lt;br /&gt;
Then, the image can be loaded using:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;fimage:FileImage FileName=&amp;quot;image.png&amp;quot; FolderName=&amp;quot;xaml&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This snipped loads the image called '''image.png''' located in the '''xaml''' folder inside the ''LocalState''.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the ''FileImage'' tag doesn't seem to support most attributes. Therefore place it inside a '''Grid''' to achieve a perfect layout.&lt;br /&gt;
&lt;br /&gt;
== Converters==&lt;br /&gt;
:''Main Page: [[Converters_In_Xamarin]]''&lt;br /&gt;
&lt;br /&gt;
They are used to convert specific data into some desired output, using custom logic. &lt;br /&gt;
&lt;br /&gt;
Consider the following example:&amp;lt;br/&amp;gt;&lt;br /&gt;
A label saying ''There are no children items available!'' should only be visible if the number of children-items is 0.&lt;br /&gt;
&lt;br /&gt;
= Advanced =&lt;br /&gt;
&lt;br /&gt;
== Feature related ==&lt;br /&gt;
&lt;br /&gt;
=== Content filtering ===&lt;br /&gt;
For the Xamarin clients, an &amp;quot;SfDataSourceExt&amp;quot; type is available for filtering list of items using defined expressions.&amp;lt;br /&amp;gt;&lt;br /&gt;
The following example demonstrates how to filter for child items having certain property values. The filtered list and its count can be displayed in the UI.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight 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.Values[&amp;amp;quot;MP_YEAR&amp;amp;quot;].Contains(&amp;amp;quot;2019&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt  x:Key=&amp;quot;FilteredList&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; Unloaded=&amp;quot;{Binding SkipFiltering}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
    &amp;lt;StackLayout Orientation=&amp;quot;Vertical&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Label Text=&amp;quot;{Binding DisplayItemsCount, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;controls:SfListViewExt ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/StackLayout&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&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;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
In the default UBIKMenuArea.xamlx (where the search UI is hosted), there are two commands associated with two events. See below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SearchBar ...&amp;gt;&lt;br /&gt;
    &amp;lt;SearchBar.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;behaviors:EventToCommandBehavior&lt;br /&gt;
            Command=&amp;quot;{Binding FreeTextSearchCommand}&amp;quot;&lt;br /&gt;
            CommandParameter=&amp;quot;{Binding Path=Text, Source={x:Reference SearchField}}&amp;quot;&lt;br /&gt;
            EventName=&amp;quot;SearchButtonPressed&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;behaviors:EventToCommandBehavior Command=&amp;quot;{Binding DelayedFreeTextSearchCommand}&amp;quot; EventName=&amp;quot;TextChanged&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/SearchBar.Behaviors&amp;gt;&lt;br /&gt;
&amp;lt;/SearchBar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The one for &amp;lt;code&amp;gt;SearchButtonPressed&amp;lt;/code&amp;gt; is responsible for executing searches after the user confirms the input (e.g. pressing {{{keypress|Enter}}} or the search button).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The one for &amp;lt;code&amp;gt;TextChanged&amp;lt;/code&amp;gt; is responsible for the &amp;quot;search as you type&amp;quot; behavior. Namely it triggers an automatic search shortly (half second) after the user stops changing the text in the search bar. It can be turned off by simply removing that particular behavior.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
To get a good performance in the app UI when using your Xaml customizings, it is recommended to try the following.&lt;br /&gt;
* Always keep your UI structure simple. Choose the most efficient layouts for the scenarios and avoid unnecessary UI elements. Please refer to [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/performance#choose-the-correct-layout &amp;quot;choose the correct layout&amp;quot;] and [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/performance#reduce-the-visual-tree-size &amp;quot;reduce the visual tree size&amp;quot;];&lt;br /&gt;
* Turn on [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/layout-compression layout compression] on wrapping elements that don't have any visual parameters set (reasons stated in the linked documentation).&lt;br /&gt;
{{Hint|There is a default &amp;quot;HeadlessLayout&amp;quot; style available in the app you can use on elements such as Grids, StackLayouts, ContentViews, etc. It turns on layout compression on the applied elements in Xamarin.Android (since we find it not worth the effort in Xamarin.iOS).}}&lt;br /&gt;
{{Attention|If possible, one should always favor designing the UI with less wrapping elements over turning on layout compression on unnecessary ones.}}&lt;br /&gt;
&lt;br /&gt;
=== Layout compression examples ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView ControlTemplate=&amp;quot;{DynamicResource ChangedSymbol}&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code above removes one wrapping element added automatically by the ContentView and demonstrates a good reason to use layout compression because it can not be avoided otherwise.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid Margin=&amp;quot;2&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Label Margin=&amp;quot;5&amp;quot; Text=&amp;quot;{Binding Title}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This example, on the other hand, demonstrates a bad usage of layout compression because it can be easily achieved by better designs such as using only the Label with a merged margin.&lt;br /&gt;
&lt;br /&gt;
Sometimes the content inside a compressed layout appears on a wrong z-index level. For eample:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BoxView CornerRadius=&amp;quot;14&amp;quot; HeightRequest=&amp;quot;28&amp;quot; WidthRequest=&amp;quot;28&amp;quot; Color=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;ContentView ControlTemplate=&amp;quot;{DynamicResource Badge}&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Label Text=&amp;quot;{Binding Title}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView &amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
According to the order of the BoxView and the Label, the latter should appear on top of the former (later ones have higher z-index levels). However, this can be disturbed by layout compression, causing the exact opposite.&lt;br /&gt;
In this case, you can add a &amp;lt;code&amp;gt;xmlns:android=&amp;quot;clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core&amp;quot;&amp;lt;/code&amp;gt; namespace to your Xaml file and manually elevate the Label by specifying &amp;lt;code&amp;gt;android:VisualElement.Elevation=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; on it accordingly (X is the delta of the z-index level you want).&lt;br /&gt;
&lt;br /&gt;
=== SfListViewExt ===&lt;br /&gt;
For performance reasons, we created an extended version of the Syncfusion SfListView control and it should be used for all lists in customizings. You need to add a namespace like &amp;lt;code&amp;gt;xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;lt;/code&amp;gt; to your Xaml file and use it like &amp;lt;code&amp;gt;&amp;lt;controls:SfListViewExt ... /&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
{{Hint|Technically speaking, SfListViewExt informs item view models when their corresponding item views appear on / disappear from the screen. This way, view models can skip a lot of unnecessary work (on the UI) when their views are not visible. '''If SfListView is used instead, the item views will not reflect content changes until the page is reloaded/refreshed.'''}}&lt;br /&gt;
&lt;br /&gt;
It is possible to configure the ListView, that the ScrollPosition is remembered when navigating away from the page, to do so, the property RembemberScrollPosition needs to be set to true:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;controls:SfListViewExt RememberScrollPosition=&amp;quot;True&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Xamarin XAML]]&lt;br /&gt;
[[Category:Pages with broken file links|Xamarin XAML]]&lt;br /&gt;
[[Category:Styling|Xamarin XAML]]&lt;br /&gt;
[[Category:Xamarin|Xamarin XAML]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21881</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21881"/>
				<updated>2019-12-02T10:57:17Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Linked objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Android and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. &lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details Page ===&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
==== Locked objects ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properities having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Editors ====&lt;br /&gt;
&lt;br /&gt;
===== Geo Editor &amp;amp; Teach In =====&lt;br /&gt;
&lt;br /&gt;
==== Guid editor ====&lt;br /&gt;
[[File:Guid_property_dialog.PNG|thumb|border|alt=Guid property editor dialog|Guid property editor dialog]]&lt;br /&gt;
&lt;br /&gt;
To edit Guid properties (that do not have a selective list available), we have implemented a special system. Since a Guid property always just contains the Guid as a reference to another object, we can use a query to find the object we want to assign to this property.&lt;br /&gt;
&lt;br /&gt;
When the Guid property has a FilterQuery datamember (which should contain the guid of a query), it will become editable through this query. Note that this FilterQuery guid will not actually be visible in the client. All this should be setup in the backend, the client has no control over this.&lt;br /&gt;
&lt;br /&gt;
When clicking an editable Guid property, you will see a dialog with up to 3 extra buttons added (see image):&lt;br /&gt;
&lt;br /&gt;
;View Object&lt;br /&gt;
:This button will be enabled when there is a valid guid assigned to the property. Clicking this button will immediately navigate to the referenced object.&lt;br /&gt;
;Edit Property&lt;br /&gt;
:If the property has a valid FilterQuery assigned to it, clicking this button will launch that query. If no FilterQuery is assigned, this button will be invisible.&lt;br /&gt;
;Clear Property Value&lt;br /&gt;
:If the property has a guid assigned, the user can press this button to reset the value back to empty.&lt;br /&gt;
&lt;br /&gt;
Additionally, if a valid FilterQuery is assigned, the user will see the results of that query ''inline'', if the query delivers 200 results or fewer. The user can select an item from this horizontally scrollable list, and press &amp;quot;OK&amp;quot; to assign the UID of the selected object to the Guid property. This is useful for cases where the user does not want to jump into the full query to be able to select an object.&lt;br /&gt;
&lt;br /&gt;
If the user does choose to launch the full query page (or if the query returns over 200 objects), they can click any of the displayed items in the query's child list. When clicking one of them, it will immediately be set as the reference in the original Guid property. To cancel selecting an item (and stop editing the property), simply navigate to any other page (by pressing back, using navigation bar, etc).&lt;br /&gt;
&lt;br /&gt;
{{hint|'''Skipping the dialog'''&lt;br /&gt;
If editing the property in a query page without having to go through the dialog is desired, one can customize the boolean variable &amp;quot;SkipQueryDialog&amp;quot; in UBIKThemes.xaml. If none can be found, simply add the following line into its &amp;quot;Default&amp;quot; ResourceDictionary.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;x:Boolean x:Key=&amp;quot;SkipQueryDialog&amp;quot;&amp;gt;True&amp;lt;/x:Boolean&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !! Fit to height&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Small.png|240x225px]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Large.png|240x225px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Hint|Double tapping on a document toggles the display between &amp;quot;Fit to width&amp;quot; and the fit mode that document is configured with.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Customizing Possibilities ====&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_EditDocumentButton.png|thumb|Button to edit a document]]&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the bottom app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
[[File:UI_WinX_EditDocumentOverlayButton.png|thumb|Edit button in thumbnail overlay]]&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which brings up an overlay of buttons, and then select the {{key press|edit}} button. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime agian when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Properties.AllItems}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21866</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21866"/>
				<updated>2019-11-27T13:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Android and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login === &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. &lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details Page ===&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
==== Locked objects ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properities having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Editors ====&lt;br /&gt;
&lt;br /&gt;
===== Geo Editor &amp;amp; Teach In =====&lt;br /&gt;
&lt;br /&gt;
==== Guid editor ====&lt;br /&gt;
[[File:Guid_property_dialog.PNG|thumb|border|alt=Guid property editor dialog|Guid property editor dialog]]&lt;br /&gt;
&lt;br /&gt;
To edit Guid properties (that do not have a selective list available), we have implemented a special system. Since a Guid property always just contains the Guid as a reference to another object, we can use a query to find the object we want to assign to this property.&lt;br /&gt;
&lt;br /&gt;
When the Guid property has a FilterQuery datamember (which should contain the guid of a query), it will become editable through this query. Note that this FilterQuery guid will not actually be visible in the client. All this should be setup in the backend, the client has no control over this.&lt;br /&gt;
&lt;br /&gt;
When clicking an editable Guid property, you will see a dialog with up to 3 extra buttons added (see image):&lt;br /&gt;
&lt;br /&gt;
;View Object&lt;br /&gt;
:This button will be enabled when there is a valid guid assigned to the property. Clicking this button will immediately navigate to the referenced object.&lt;br /&gt;
;Edit Property&lt;br /&gt;
:If the property has a valid FilterQuery assigned to it, clicking this button will launch that query. If no FilterQuery is assigned, this button will be invisible.&lt;br /&gt;
;Clear Property Value&lt;br /&gt;
:If the property has a guid assigned, the user can press this button to reset the value back to empty.&lt;br /&gt;
&lt;br /&gt;
Additionally, if a valid FilterQuery is assigned, the user will see the results of that query ''inline'', if the query delivers 200 results or fewer. The user can select an item from this horizontally scrollable list, and press &amp;quot;OK&amp;quot; to assign the UID of the selected object to the Guid property. This is useful for cases where the user does not want to jump into the full query to be able to select an object.&lt;br /&gt;
&lt;br /&gt;
If the user does choose to launch the full query page (or if the query returns over 200 objects), they can click any of the displayed items in the query's child list. When clicking one of them, it will immediately be set as the reference in the original Guid property. To cancel selecting an item (and stop editing the property), simply navigate to any other page (by pressing back, using navigation bar, etc).&lt;br /&gt;
&lt;br /&gt;
{{hint|'''Skipping the dialog'''&lt;br /&gt;
If editing the property in a query page without having to go through the dialog is desired, one can customize the boolean variable &amp;quot;SkipQueryDialog&amp;quot; in UBIKThemes.xaml. If none can be found, simply add the following line into its &amp;quot;Default&amp;quot; ResourceDictionary.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;x:Boolean x:Key=&amp;quot;SkipQueryDialog&amp;quot;&amp;gt;True&amp;lt;/x:Boolean&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !! Fit to height&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Small.png|240x225px]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Large.png|240x225px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Hint|Double tapping on a document toggles the display between &amp;quot;Fit to width&amp;quot; and the fit mode that document is configured with.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Customizing Possibilities ====&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_EditDocumentButton.png|thumb|Button to edit a document]]&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the bottom app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
[[File:UI_WinX_EditDocumentOverlayButton.png|thumb|Edit button in thumbnail overlay]]&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which brings up an overlay of buttons, and then select the {{key press|edit}} button. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime agian when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects == &lt;br /&gt;
{{Version/WinXSince|3.6}}&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Content.Properties}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21865</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21865"/>
				<updated>2019-11-27T13:14:04Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Android and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
=== Confirm login ===&lt;br /&gt;
&lt;br /&gt;
Certain pages might require to confirm the login data, even if the user is already logged in. This can be done in the following way: The CheckUserOfflineCommand needs to be called with the username and password as parameter, if the login was valid, the CheckUserOfflineSuccess boolean property is set to true, which causes the text &amp;quot;Login confirmed&amp;quot; to appear in the example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;TextBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01User&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;User&amp;quot;&lt;br /&gt;
	Text=&amp;quot;{Binding UserName}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;PasswordBox&lt;br /&gt;
	x:Name=&amp;quot;Sign01PW&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&lt;br /&gt;
	PlaceholderText=&amp;quot;Password&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;Button&lt;br /&gt;
	Command=&amp;quot;{Binding CheckUserOfflineCommand}&amp;quot;&lt;br /&gt;
	Content=&amp;quot;Confirm login&amp;quot;&lt;br /&gt;
	DataContext=&amp;quot;{Binding AuthenticationViewModel, Source={StaticResource Locator}}&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;Button.CommandParameter&amp;gt;&lt;br /&gt;
		&amp;lt;uc:KeyValueList&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;UserName&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01User, Path=Text}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;uc:KeyValueParameter Key=&amp;quot;Password&amp;quot; Value=&amp;quot;{Binding ElementName=Sign01PW, Path=Password}&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/uc:KeyValueList&amp;gt;&lt;br /&gt;
	&amp;lt;/Button.CommandParameter&amp;gt;&lt;br /&gt;
&amp;lt;/Button&amp;gt;&lt;br /&gt;
&amp;lt;TextBlock Text=&amp;quot;Login confirmed&amp;quot; Visibility=&amp;quot;{Binding AuthenticationViewModel.CheckUserOfflineSuccess, Source={StaticResource Locator}, FallbackValue=false, Converter={StaticResource BoolToVisConverter}}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. &lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details Page ===&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
==== Locked objects ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properities having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Editors ====&lt;br /&gt;
&lt;br /&gt;
===== Geo Editor &amp;amp; Teach In =====&lt;br /&gt;
&lt;br /&gt;
==== Guid editor ====&lt;br /&gt;
[[File:Guid_property_dialog.PNG|thumb|border|alt=Guid property editor dialog|Guid property editor dialog]]&lt;br /&gt;
&lt;br /&gt;
To edit Guid properties (that do not have a selective list available), we have implemented a special system. Since a Guid property always just contains the Guid as a reference to another object, we can use a query to find the object we want to assign to this property.&lt;br /&gt;
&lt;br /&gt;
When the Guid property has a FilterQuery datamember (which should contain the guid of a query), it will become editable through this query. Note that this FilterQuery guid will not actually be visible in the client. All this should be setup in the backend, the client has no control over this.&lt;br /&gt;
&lt;br /&gt;
When clicking an editable Guid property, you will see a dialog with up to 3 extra buttons added (see image):&lt;br /&gt;
&lt;br /&gt;
;View Object&lt;br /&gt;
:This button will be enabled when there is a valid guid assigned to the property. Clicking this button will immediately navigate to the referenced object.&lt;br /&gt;
;Edit Property&lt;br /&gt;
:If the property has a valid FilterQuery assigned to it, clicking this button will launch that query. If no FilterQuery is assigned, this button will be invisible.&lt;br /&gt;
;Clear Property Value&lt;br /&gt;
:If the property has a guid assigned, the user can press this button to reset the value back to empty.&lt;br /&gt;
&lt;br /&gt;
Additionally, if a valid FilterQuery is assigned, the user will see the results of that query ''inline'', if the query delivers 200 results or fewer. The user can select an item from this horizontally scrollable list, and press &amp;quot;OK&amp;quot; to assign the UID of the selected object to the Guid property. This is useful for cases where the user does not want to jump into the full query to be able to select an object.&lt;br /&gt;
&lt;br /&gt;
If the user does choose to launch the full query page (or if the query returns over 200 objects), they can click any of the displayed items in the query's child list. When clicking one of them, it will immediately be set as the reference in the original Guid property. To cancel selecting an item (and stop editing the property), simply navigate to any other page (by pressing back, using navigation bar, etc).&lt;br /&gt;
&lt;br /&gt;
{{hint|'''Skipping the dialog'''&lt;br /&gt;
If editing the property in a query page without having to go through the dialog is desired, one can customize the boolean variable &amp;quot;SkipQueryDialog&amp;quot; in UBIKThemes.xaml. If none can be found, simply add the following line into its &amp;quot;Default&amp;quot; ResourceDictionary.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;x:Boolean x:Key=&amp;quot;SkipQueryDialog&amp;quot;&amp;gt;True&amp;lt;/x:Boolean&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !! Fit to height&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Small.png|240x225px]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Large.png|240x225px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Attention|When using a FlipView for documents in your customized XAMLs, you need to additionally [[XAML_Tips#Fit_mode|apply the fit mode]] by yourself. }}&lt;br /&gt;
{{Hint|Double tapping on a document toggles the display between &amp;quot;Fit to width&amp;quot; and the fit mode that document is configured with.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Customizing Possibilities ====&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_EditDocumentButton.png|thumb|Button to edit a document]]&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the bottom app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
[[File:UI_WinX_EditDocumentOverlayButton.png|thumb|Edit button in thumbnail overlay]]&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which brings up an overlay of buttons, and then select the {{key press|edit}} button. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime agian when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
== Linked objects ==&lt;br /&gt;
It is possible to display values of linked objects by using the &amp;quot;LinkedLevel&amp;quot; property. An example can be seen here, where Items[0] is a Guid property linking to another object. The ItemsControl then binds to the Properties of the linked object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid DataContext=&amp;quot;{Binding Properties.Items[0].LinkedLevel}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding Content.Properties}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.Android)&amp;diff=21829</id>
		<title>Version 1.0 (Xamarin.Android)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.Android)&amp;diff=21829"/>
				<updated>2019-11-12T12:54:32Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* XAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release notes =&lt;br /&gt;
Initial release (1.0) of the Xamarin.Android app.&lt;br /&gt;
* It's available in the Google Play Store ([https://play.google.com/store/apps/details?id=com.augmensys.ubik link]).&lt;br /&gt;
* If subscribed in our App Center distribution channel, you can also download through email notifications.&lt;br /&gt;
&lt;br /&gt;
== Build history ==&lt;br /&gt;
* 1.0.69 on 2019-10-21&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 1.0.71 on 2019-10-28&lt;br /&gt;
** Syncfusion chart control (https://help.syncfusion.com/xamarin/sfchart/getting-started#initialize-chart) can now be used in XAML customizings;&lt;br /&gt;
** Added confirmation before deleting XAML customizings;&lt;br /&gt;
** Fixed an issue where the progress bar was not shown on workpackages.&lt;br /&gt;
* 1.0.72 on 2019-10-29&lt;br /&gt;
** Improved the stability of the client;&lt;br /&gt;
** In case of errors in XAML customizings, the client now provides more useful information (e.g. name of the customizing, line number, error) for easy trouble-shooting;&lt;br /&gt;
** Fixed an issue where lists were often missing an item (the first one) after applying filters.&lt;br /&gt;
* 1.0.73 on 2019-11-04&lt;br /&gt;
** Fixed an issue where importing customizings didn't work on some devices;&lt;br /&gt;
** Fixed an issue where content filtering stopped working on the root page after navigating back.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
&lt;br /&gt;
= XAML =&lt;br /&gt;
[[Xamarin_XAML|Some basic information]] to get you started on the XAML customizing topic.&lt;br /&gt;
&lt;br /&gt;
To stop the re-evaluation of not needed filters, the SfDataSourceExt has a Property &amp;quot;Unloaded&amp;quot; which stops the filtering if set to true. For details see: [https://wiki.augmensys.com/index.php?title=Xamarin_XAML#Content_filtering]. This increases the performance of filtered lists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
[[Category:Version 1.0|Version 1.0 (Xamarin.Android)]]&lt;br /&gt;
[[Category:Xamarin|Version 1.0 (Xamarin.Android)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.iOS)&amp;diff=21828</id>
		<title>Version 1.0 (Xamarin.iOS)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_1.0_(Xamarin.iOS)&amp;diff=21828"/>
				<updated>2019-11-12T12:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* XAML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Release notes =&lt;br /&gt;
Initial release (1.0) of the Xamarin.iOS app.&lt;br /&gt;
* It's available in the Apple App Store.&lt;br /&gt;
* If subscribed in our App Center distribution channel, you can also download through email notifications.&lt;br /&gt;
&lt;br /&gt;
== Build history ==&lt;br /&gt;
* 1.0.73 on 2019-11-04&lt;br /&gt;
** Initial release.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
* Branch download might be paused if the device goes into sleep mode without a power source attached and will only resume if the device screen is unlocked again. We are aware of this issue and will improve it in the future versions.&lt;br /&gt;
* When editing the value of a double property in landscape mode characters other then numbers are not displayed but still remain in the string.&lt;br /&gt;
&lt;br /&gt;
= XAML =&lt;br /&gt;
[[Xamarin_XAML|Some basic information]] to get you started on the XAML customizing topic.&lt;br /&gt;
&lt;br /&gt;
To stop the re-evaluation of not needed filters, the SfDataSourceExt has a Property &amp;quot;Unloaded&amp;quot; which stops the filtering if set to true. For details see: [https://wiki.augmensys.com/index.php?title=Xamarin_XAML#Content_filtering]. This increases the performance of filtered lists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
[[Category:Version 1.0|Version 1.0 (Xamarin.iOS)]]&lt;br /&gt;
[[Category:Xamarin|Version 1.0 (Xamarin.iOS)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Mobile_XAML&amp;diff=21827</id>
		<title>Mobile XAML</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Mobile_XAML&amp;diff=21827"/>
				<updated>2019-11-12T12:50:28Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Content filtering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The User Interface of the Xamarin Clients (Android, iOS, new UWP) can be fundamentally customized using custom XAML definitions. This customization process is heavily influenced by the [[XAML|XAML Customization Process on the WinX Client]].&lt;br /&gt;
&lt;br /&gt;
= Basics =&lt;br /&gt;
There are predefined XAML templates available that can be customized. If no customizing is found, the default templates will be used.&lt;br /&gt;
&lt;br /&gt;
== Default XAMLs ==&lt;br /&gt;
All default XAML templates that can be customized are available through the Xamarin.UWP client. You need to go to the app settings and click the &amp;quot;Unpack default XAMLs&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
== Differences to WinX/UWP ==&lt;br /&gt;
* Since it's based on the Xamarin XAML dialect, you CANNOT use any existing XAML customizings for the WinX/UWP app;&lt;br /&gt;
* Namespace definitions must include the corresponding assembly names;&lt;br /&gt;
* XAML template files have the extension name of '''xamlx''' instead of '''xaml''';&lt;br /&gt;
* You can deploy only those resources that you want to customize.&lt;br /&gt;
&lt;br /&gt;
= Overriding default XAMLs=&lt;br /&gt;
On Windows (WinX/UWP), the &amp;lt;code&amp;gt;[App Package Folder]/LocalState/xaml/&amp;lt;/code&amp;gt; folder can be accessed by the user and the customized XAML files directly added. An alternative to this on all platforms (including Android, iOS, etc.) is to use the ''Import Customizing'' button in the app settings to import the templates, styles, images, etc. (file by file, or all files within a zip package). The changes should be reflected in the UI (except the current page) without restarting the app. After directly editing the customizings (Xamarin.UWP), you can also use the &amp;quot;Reload customizing&amp;quot; button without restarting the app.&lt;br /&gt;
&lt;br /&gt;
In the following, we're going to override the default light theme color of the app:&lt;br /&gt;
* Unpack the default XAMLs;&lt;br /&gt;
* Pick and deploy the default UBIKThemes.xamlx to the '''xaml''' folder inside the ''LocalState'' folder;&lt;br /&gt;
* Open it with the text editor of your choice and remove everything within the '''ResouceDictionary''' except &amp;lt;code&amp;gt;&amp;lt;Color x:Key=&amp;quot;UBIKLightThemeColor&amp;quot;&amp;gt;blue&amp;lt;/Color&amp;gt;&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Save the changes and reload. You should see changes successfully implemented.&lt;br /&gt;
&lt;br /&gt;
{{Attention| For maintainability reasons, it's HIGHLY recommended to deploy only those XAML resources you want to override. For example, if you only want to customize the UBIKChildArea, don't deploy others like the UBIKMenuArea. If you only want to customize the UBIKChildItem, that's the only content you should include in the UBIKThemes.}}&lt;br /&gt;
&lt;br /&gt;
== Custom Templates ==&lt;br /&gt;
Custom templates can be added, just like on the WinX/UWP client. Make sure to include all '''namespace definitions''' (as attributes of the '''ContentView''' tag), otherwise the custom template will not load.&lt;br /&gt;
&lt;br /&gt;
Similar to the ''UBIKThemes.xamlx'' file, custom or overridden templates start with a &amp;lt;code&amp;gt;&amp;lt;ContentView&amp;gt;&amp;lt;/code&amp;gt; tag containing all '''namespaces'''. &amp;lt;code&amp;gt;&amp;lt;ContentView.Resources&amp;gt;&amp;lt;/code&amp;gt; takes a '''ResourceDictionary''' and contains resources like references to converters. Finally, &amp;lt;code&amp;gt;&amp;lt;ContentView.Content&amp;gt;&amp;lt;/code&amp;gt; contains the actual layout content (it's best to start with a '''Grid'''). Again, don't forget to add namespaces that you need!&lt;br /&gt;
&lt;br /&gt;
Templates can also be defined in ''UBIKThemes.xamlx''. In this case, they need to be added into the &amp;lt;code&amp;gt;&amp;lt;ResourceDictionary&amp;gt;&amp;lt;/code&amp;gt; inside the &amp;lt;code&amp;gt;&amp;lt;ContentView.Resources&amp;gt;&amp;lt;/code&amp;gt; template as a &amp;lt;code&amp;gt;&amp;lt;DataTemplate&amp;gt;&amp;lt;/code&amp;gt;. Similarly, if you want to split up the templates into seperate files, you need to make sure to follow the steps mentioned above and get the content of the &amp;lt;code&amp;gt;&amp;lt;DataTemplate&amp;gt;&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;&amp;lt;ContentView.Content&amp;gt;&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
{{Attention|Templates defined in separate files will override templates defined in the ''UBIKThemes.xamlx''!}}&lt;br /&gt;
&lt;br /&gt;
== Adding Images ==&lt;br /&gt;
Images can't be loaded with the default '''Image''' tag, as the image is on different paths on each operating system.&lt;br /&gt;
&lt;br /&gt;
Therefore, there's a custom '''FileImage''' that internally overrides the default ''Image'' with two custom parameters:&lt;br /&gt;
* '''FolderName''' ...The name of the '''folder''' in the '''local folder'''. Only the first level inside the ''LocalState'' folder seems to work.&lt;br /&gt;
* '''FileName''' ...The name of the '''file''' in the said folder. &lt;br /&gt;
&lt;br /&gt;
Make sure to implement the proper namespace as well by adding&lt;br /&gt;
&amp;lt;code&amp;gt;xmlns:fimage=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;lt;/code&amp;gt; into the root item's attributes.&lt;br /&gt;
&lt;br /&gt;
Then, the image can be loaded using:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;fimage:FileImage FileName=&amp;quot;image.png&amp;quot; FolderName=&amp;quot;xaml&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This snipped loads the image called '''image.png''' located in the '''xaml''' folder inside the ''LocalState''.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the ''FileImage'' tag doesn't seem to support most attributes. Therefore place it inside a '''Grid''' to achieve a perfect layout.&lt;br /&gt;
&lt;br /&gt;
== Converters==&lt;br /&gt;
:''Main Page: [[Converters_In_Xamarin]]''&lt;br /&gt;
&lt;br /&gt;
They are used to convert specific data into some desired output, using custom logic. &lt;br /&gt;
&lt;br /&gt;
Consider the following example:&amp;lt;br/&amp;gt;&lt;br /&gt;
A label saying ''There are no children items available!'' should only be visible if the number of children-items is 0.&lt;br /&gt;
&lt;br /&gt;
= Advanced =&lt;br /&gt;
&lt;br /&gt;
== Feature related ==&lt;br /&gt;
&lt;br /&gt;
=== Content filtering ===&lt;br /&gt;
For the Xamarin clients, an &amp;quot;SfDataSourceExt&amp;quot; type is available for filtering list of items using defined expressions.&amp;lt;br /&amp;gt;&lt;br /&gt;
The following example demonstrates how to filter for child items having certain property values. The filtered list and its count can be displayed in the UI.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight 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.Values[&amp;amp;quot;MP_YEAR&amp;amp;quot;].Contains(&amp;amp;quot;2019&amp;amp;quot;)&amp;lt;/x:String&amp;gt;&lt;br /&gt;
            &amp;lt;controls:SfDataSourceExt  x:Key=&amp;quot;FilteredList&amp;quot; Expression=&amp;quot;{StaticResource Expresssion}&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot; Unloaded=&amp;quot;{Binding SkipFiltering}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ContentView.Resources&amp;gt;&lt;br /&gt;
    &amp;lt;StackLayout Orientation=&amp;quot;Vertical&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Label Text=&amp;quot;{Binding DisplayItemsCount, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;controls:SfListViewExt ItemsSource=&amp;quot;{Binding DisplayItems, Source={StaticResource FilteredList}}&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/StackLayout&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Xamarin XAML]]&lt;br /&gt;
[[Category:Pages with broken file links|Xamarin XAML]]&lt;br /&gt;
[[Category:Styling|Xamarin XAML]]&lt;br /&gt;
[[Category:Xamarin|Xamarin XAML]]&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
In the default UBIKMenuArea.xamlx (where the search UI is hosted), there are two commands associated with two events. See below.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SearchBar ...&amp;gt;&lt;br /&gt;
    &amp;lt;SearchBar.Behaviors&amp;gt;&lt;br /&gt;
        &amp;lt;behaviors:EventToCommandBehavior&lt;br /&gt;
            Command=&amp;quot;{Binding FreeTextSearchCommand}&amp;quot;&lt;br /&gt;
            CommandParameter=&amp;quot;{Binding Path=Text, Source={x:Reference SearchField}}&amp;quot;&lt;br /&gt;
            EventName=&amp;quot;SearchButtonPressed&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;behaviors:EventToCommandBehavior Command=&amp;quot;{Binding DelayedFreeTextSearchCommand}&amp;quot; EventName=&amp;quot;TextChanged&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/SearchBar.Behaviors&amp;gt;&lt;br /&gt;
&amp;lt;/SearchBar&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The one for &amp;lt;code&amp;gt;SearchButtonPressed&amp;lt;/code&amp;gt; is responsible for executing searches after the user confirms the input (e.g. pressing {{{keypress|Enter}}} or the search button).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The one for &amp;lt;code&amp;gt;TextChanged&amp;lt;/code&amp;gt; is responsible for the &amp;quot;search as you type&amp;quot; behavior. Namely it triggers an automatic search shortly (half second) after the user stops changing the text in the search bar. It can be turned off by simply removing that particular behavior.&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
To get a good performance in the app UI when using your Xaml customizings, it is recommended to try the following.&lt;br /&gt;
* Always keep your UI structure simple. Choose the most efficient layouts for the scenarios and avoid unnecessary UI elements. Please refer to [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/performance#choose-the-correct-layout &amp;quot;choose the correct layout&amp;quot;] and [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/performance#reduce-the-visual-tree-size &amp;quot;reduce the visual tree size&amp;quot;];&lt;br /&gt;
* Turn on [https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/layout-compression layout compression] on wrapping elements that don't have any visual parameters set (reasons stated in the linked documentation).&lt;br /&gt;
{{Hint|There is a default &amp;quot;HeadlessLayout&amp;quot; style available in the app you can use on elements such as Grids, StackLayouts, ContentViews, etc. It turns on layout compression on the applied elements in Xamarin.Android (since we find it not worth the effort in Xamarin.iOS).}}&lt;br /&gt;
{{Attention|If possible, one should always favor designing the UI with less wrapping elements over turning on layout compression on unnecessary ones.}}&lt;br /&gt;
&lt;br /&gt;
=== Layout compression examples ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentView ControlTemplate=&amp;quot;{DynamicResource ChangedSymbol}&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The code above removes one wrapping element added automatically by the ContentView and demonstrates a good reason to use layout compression because it can not be avoided otherwise.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Grid Margin=&amp;quot;2&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Label Margin=&amp;quot;5&amp;quot; Text=&amp;quot;{Binding Title}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Grid&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This example, on the other hand, demonstrates a bad usage of layout compression because it can be easily achieved by better designs such as using only the Label with a merged margin.&lt;br /&gt;
&lt;br /&gt;
Sometimes the content inside a compressed layout appears on a wrong z-index level. For eample:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;BoxView CornerRadius=&amp;quot;14&amp;quot; HeightRequest=&amp;quot;28&amp;quot; WidthRequest=&amp;quot;28&amp;quot; Color=&amp;quot;Red&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;ContentView ControlTemplate=&amp;quot;{DynamicResource Badge}&amp;quot; Style=&amp;quot;{DynamicResource HeadlessLayout}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Label Text=&amp;quot;{Binding Title}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/ContentView &amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
According to the order of the BoxView and the Label, the latter should appear on top of the former (later ones have higher z-index levels). However, this can be disturbed by layout compression, causing the exact opposite.&lt;br /&gt;
In this case, you can add a &amp;lt;code&amp;gt;xmlns:android=&amp;quot;clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core&amp;quot;&amp;lt;/code&amp;gt; namespace to your Xaml file and manually elevate the Label by specifying &amp;lt;code&amp;gt;android:VisualElement.Elevation=&amp;quot;X&amp;quot;&amp;lt;/code&amp;gt; on it accordingly (X is the delta of the z-index level you want).&lt;br /&gt;
&lt;br /&gt;
=== SfListViewExt ===&lt;br /&gt;
For performance reasons, we created an extended version of the Syncfusion SfListView control and it should be used for all lists in customizings. You need to add a namespace like &amp;lt;code&amp;gt;xmlns:controls=&amp;quot;clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL&amp;quot;&amp;lt;/code&amp;gt; to your Xaml file and use it like &amp;lt;code&amp;gt;&amp;lt;controls:SfListViewExt ... /&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
{{Hint|Technically speaking, SfListViewExt informs item view models when their corresponding item views appear on / disappear from the screen. This way, view models can skip a lot of unnecessary work (on the UI) when their views are not visible. '''If SfListView is used instead, the item views will not reflect content changes until the page is reloaded/refreshed.'''}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Client|Xamarin XAML]]&lt;br /&gt;
[[Category:Pages with broken file links|Xamarin XAML]]&lt;br /&gt;
[[Category:Styling|Xamarin XAML]]&lt;br /&gt;
[[Category:Xamarin|Xamarin XAML]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21779</id>
		<title>Version 3.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21779"/>
				<updated>2019-10-23T10:35:39Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Xaml Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|There are mandatory Xaml changes and existing customizings need to be updated.}}&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* Position and Orientation information of separate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter. &lt;br /&gt;
* It is now possible to persist the scroll position of a ListView when browsing through the content hierarchy. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The element in the middle of the screen within a !ListView is memorized. With this information the scroll position is memorized. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The feature of [[Login_View#UWP_.26_Xamarin_clients|remembering user credentials]] is redesigned.&lt;br /&gt;
* The GlobalStatusBar can now be fully customized in the template: ''UBIKGlobalStatusBar.xaml''.&lt;br /&gt;
* The AuthenticationPage (Start Page of the App) can now be fully customized in the template: ''UBIKStartArea.xaml''.&lt;br /&gt;
* It is now possible to use external Bluetooth RFID Readers to scan [[RFID_tags#tab=WinX_External_Scanner|RFID Tags]] in UBIK.&lt;br /&gt;
* The not found offline query criteria are now ignored.&lt;br /&gt;
* It's now possible to use [[XAML_Tips#MultiBinding|multi bindings]] in XAML.&lt;br /&gt;
* A new command ''InvokeForAllChildrenCommand'' allows to execute a command on all selected items of a ''ChildrenListViewModel''&lt;br /&gt;
* A new property ''LinkedLevel'' on the ''PropertyListItemViewModel'' loads and delivers a full PageViewModel of the linked object of a Guid property&lt;br /&gt;
* It is now possible to attach documents to the [[Property_Wizard_(Client)|content creation wizard]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* Simplified and improved the bindings to TemplateService and its templates. See [[Version_3.6_(WinX)#Xaml_Changes|Xaml Changes]].&lt;br /&gt;
* The shortcut key to activate the [[Developer_Mode|developer mode]] is changed from {{key press|F12}} to {{key press|Ctrl}}+{{key press|F12}} (to reduce activations by accident and to avoid conflicts with other applications).&lt;br /&gt;
* Improved ToString representations of collections for better use in DeveloperMode&lt;br /&gt;
* Improved the performance and responsiveness when loading large lists.&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue when clicking on ListViewItem in ZoomedOutListView it does not navigate, when clicking on the right side of the object&lt;br /&gt;
* Fixed an issue where OCR Definitions (&amp;quot;TAG_Chars.xml) generated through the experimental ''TagReader'' App could not  be used by the client anymore&lt;br /&gt;
* Fixed an issue where UBIK was crashing when repeatedly opening the GuidEditor using the PropertyWizard.&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
&lt;br /&gt;
= Xaml Changes =&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
We have made some improvements to make some bindings in Xaml code easier and more efficient. Some changes to your existing Xaml customizings might be necessary. Please refer to each section to see if the change is mandatory or not.&lt;br /&gt;
&lt;br /&gt;
== Binding to TemplateService and the templates ==&lt;br /&gt;
This change is '''not mandatory''' and your existing Xamls will still work. We do recommend updating them, though.&lt;br /&gt;
&lt;br /&gt;
Previously the TemplateService (the one providing access to all customizable templates) was only available on certain views (e.g. pages, dialogs, etc.). And the binding to it could only be done using named element like&lt;br /&gt;
:&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentControl ContentTemplate=&amp;quot;{Binding ElementName=contentPage, Path=TemplateService.UBIKChildPageActionTemplate}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
It is now made accessible from all view models (you can use the [[Developer_Mode|developer mode]] to check its availability). Also, you can now use the exact names of the template files as indexers for binding to those templates. Therefore, the binding can be changed to something like&lt;br /&gt;
:&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ContentControl ContentTemplate=&amp;quot;{Binding TemplateService[UBIKChildPageAction]}&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use SelectionBoundListView instead of ListView ==&lt;br /&gt;
A SelectionBoundListView was already available in earlier versions but not mandatory. For performance improvements, it is now '''mandatory''' wherever you display {{UBIK}} content (objects, properties, etc.).&lt;br /&gt;
You need to add a namespace like &amp;lt;code&amp;gt;xmlns:uc=&amp;quot;using:UBIK.WinX.Controls&amp;quot;&amp;lt;/code&amp;gt; to your Xaml file and use it like &amp;lt;code&amp;gt;&amp;lt;uc:SelectionBoundListView ... /&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
{{Hint|Technically speaking, SelectionBoundListView informs item view models when their corresponding items are visualized. This way, view models can skip a lot of unnecessary work (on the UI) when their views are not visible. '''If the regular ListView is used instead, the item views will not reflect content changes until the page is reloaded/refreshed.'''}}&lt;br /&gt;
&lt;br /&gt;
== Customized Sorting ==&lt;br /&gt;
Customizers can now specify the sort order of the items in XAML with the help of a ListCollectionView. The path to a comparable property, that is used for comparing can be specified. Multiple properties can be used, whereby the priority goes from the first to the last property. The direction can be specified by either &amp;quot;Ascending&amp;quot; (default) or &amp;quot;Descending&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;collectionview:ListCollectionView x:Key=&amp;quot;CustomSortedList&amp;quot; ItemsSource=&amp;quot;{Binding Children.Items}&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;collectionview:ListCollectionView.SortParameter&amp;gt;&lt;br /&gt;
       &amp;lt;collectionview:SortDescriptions&amp;gt;&lt;br /&gt;
         &amp;lt;collectionview:SortDescription PropertyName=&amp;quot;Header&amp;quot; Direction=&amp;quot;Ascending&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;collectionview:SortDescription PropertyName=&amp;quot;Content.UID&amp;quot; Direction=&amp;quot;Descending&amp;quot;/&amp;gt;&lt;br /&gt;
       &amp;lt;/collectionview:SortDescriptions&amp;gt;&lt;br /&gt;
    &amp;lt;/collectionview:ListCollectionView.SortParameter&amp;gt;&lt;br /&gt;
  &amp;lt;/collectionview:ListCollectionView&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:Version 3.6|Version 3.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.5_(WinX)&amp;diff=21566</id>
		<title>Version 3.5 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.5_(WinX)&amp;diff=21566"/>
				<updated>2019-08-26T12:43:37Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Build History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|There are breaking XAML template changes in this version. If you use any customized XAMLs from older versions, they should be updated according to [[XAML_Changes_in_UBIK_WinX_3.5|these instructions]]. }}&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* It is now possible to configure complex parameter lists for various commands in XAML, using the new [[KeyValueList]] element&lt;br /&gt;
* It is now possible to use [[AR-Marker]]s for [[AR-Marker_Device_Pose_Estimation|device pose estimation]].&lt;br /&gt;
* Administrators can now configure the [[UBIK_WinX_Client_Basics#Fit_Mode|fit modes]] which determines how documents are initially displayed.&lt;br /&gt;
* You can now find comments on various type list members in the [[Developer_Mode|developer mode]]. This is an ongoing process and more comments will be added/improved after the release.&lt;br /&gt;
&lt;br /&gt;
=== Enhancements ===&lt;br /&gt;
* The Camera Access was refactored to provide a proper basis for upcoming features.&lt;br /&gt;
* The Rendering Environment was refactored to provide a proper basis for upcoming features.&lt;br /&gt;
* The problematic CollectionToViewConverter for content filtering is replaced by the new ListCollectionView. See [[XAML_Changes_in_UBIK_WinX_3.5]] for details.&lt;br /&gt;
* Users can now confirm and save their signature before the timer ends.&lt;br /&gt;
* The OK button will now stay disabled if there is no signature.&lt;br /&gt;
* Improved the way navigation history is maintained so that issues such as wrong navigation destinations upon leaving unsaved changes no longer occur.&lt;br /&gt;
* The [[Offline_Query_(UBIK_WinX)#String_criterion|string criteria of offline queries]] are now more restrictive (all sub strings must be found instead of just one).&lt;br /&gt;
* Greatly improved the app's performance when loading PDF files with many pages. You might want to check [[XAML_Tips#FlipView|this]] out as well.&lt;br /&gt;
* Scanning is now paused when the last search result dialog is still open for user interaction.&lt;br /&gt;
* Comma and dot are both accepted as decimal seperators when entering numbers, independent of the current culture.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue where POIs were only rendered in the upper half of the POIPage.&lt;br /&gt;
* Fixed an issue where OCR Shapes were rotated in the wrong direction.&lt;br /&gt;
* Fixed an issue where Child Informations were not shown in the POIFlyout of the Map Page.&lt;br /&gt;
* Fixed an issue where AR Settings were not applied when returning from the Settings to the POI Page.&lt;br /&gt;
* Fixed an issue where browsing through local content can be difficult (the content is shown after a substantial delay) when downloading large branches.&lt;br /&gt;
* Fixed an issue where branch download is sometimes interrupted by too many file downloading failures.&lt;br /&gt;
* Fixed an issue where file downloading events are sometimes not logged.&lt;br /&gt;
* Fixed an issue where the compass needle in the POI Page was not updated properly.&lt;br /&gt;
* Fixed an issue where POI Icons in the Map Page changed upon selection.&lt;br /&gt;
* Fixed an issue where the distance on the POI Flyout was always zero for Geometries.&lt;br /&gt;
* Fixed an issue where the POI Flyout Selection was reversed after exiting buildings.&lt;br /&gt;
* Fixed an issue where POI poses were not updated once the Building Level or POI Groups changed.&lt;br /&gt;
* Fixed an issue where the HideOtherPOIs and ScreenOffset Settings had no effect on POI Rendering.&lt;br /&gt;
* Fixed an issue where POIs were rendered upside down when having a negative ScaleX property.&lt;br /&gt;
* Fixed an issue where POIs in the Map and POI Page were not updated once infrastructure objects were loaded.&lt;br /&gt;
* Fixed an issue where the Geo Editor TeachIn ignored manual positions.&lt;br /&gt;
* Fixed an issue where AR-Marker POIs were blinking when they should have been behind the camera.&lt;br /&gt;
* Fixed an issue where POIs were visible in the upper left corner of the POI Page if the near and far clipping plane were too close.&lt;br /&gt;
* Fixed an issue where camera flash toggle button was not updated when changing the camera.&lt;br /&gt;
* Fixed an issue where editor showed wrong content when Not Applicable was checked.&lt;br /&gt;
* Fixed an issue where the POI Page was not properly restored after UBIK was minimized.&lt;br /&gt;
* Fixed an issue where it was not possible to return to Scan Page after scanning AR-Markers.&lt;br /&gt;
* Fixed an issue where the RFID(NFC) Scanner did not show a dialog window with more objects (when tag has targets two objects or more)&lt;br /&gt;
* Invalid characters in profile names are escaped/replaced and will no longer break the app.&lt;br /&gt;
* Fixed several UI issues in the Gantt chart control. For example, no longer displaying the current date line or the progress bar if it doesn't fall into the project timeline.&lt;br /&gt;
* Fixed an issue where the content page displays incorrect title/subtitle right after editing a Guid property using a query.&lt;br /&gt;
* Fixed an issue where the user can only browse to the same object once by scanning the QR code (unless a different marker is scanned).&lt;br /&gt;
* Fixed an issue where the &amp;quot;Manual&amp;quot; sync mode configured in profiles is ignored during logins.&lt;br /&gt;
* Fixed an issue where the toggling of fit-to-width mode for documents doesn't work (when Windows animation is enabled).&lt;br /&gt;
* Fixed an issue where the device position calculated from AR-Markers was wrong.&lt;br /&gt;
* Fixed an issue where POIs having a negative AR-Marker side length were not shown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Known issues ===&lt;br /&gt;
* Project specific resources defined in UBIKThemes might not take effect immediately after switching profiles. Restarting the app solves the problem.&lt;br /&gt;
* If a device has multiple cameras of exactly the same model (e.g. Microsoft HD 3000), the wrong one might be used during remote support calls.&lt;br /&gt;
* When using the UBIK contrast profile for OCR scanning, the app might crash especially if other marker scanning is also turned on.&lt;br /&gt;
&lt;br /&gt;
=== Additional notes ===&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
* 3.5.2 on 2019-04-30&lt;br /&gt;
** Initial release.&lt;br /&gt;
* 3.5.3 on 2019-05-03&lt;br /&gt;
** It is now possible to display the distance to AR-Marker POIs.&lt;br /&gt;
** The same layer selection button is now also available in the POI page (previously only in the map page).&lt;br /&gt;
* 3.5.5 on 2019-06-12&lt;br /&gt;
** [[XAML_Tips#Content_creation|Creating child objects under non-context objects]] is now possible.&lt;br /&gt;
** Fixed an issue where the Guid property value is not committed if an editing starts from a child item.&lt;br /&gt;
** Fixed an issue where Guid properties without original server values can’t be saved.&lt;br /&gt;
* 3.5.11 on 2019-07-19&lt;br /&gt;
** Fixed an issue so that navigating to a hotspot in a document works again.&lt;br /&gt;
** Errors in custom XAML templates are now displayed as red section in the App, including the full exception message (which is typically pointing to the line in the XAML file)&lt;br /&gt;
{{Hint|There are still XAML errors that cannot be caught, such as referencing a StaticResource that doesn't exist - in such a case, the App will crash, but it will still write the full exception message to  [AppInstallPath]\''LocalState\UBIKDebug.log'' before termination, thus the corrupted line can again be easily identified!}}&lt;br /&gt;
* 3.5.13 on 2019-07-19&lt;br /&gt;
** Fixed an issue so that navigating to a hotspot in a document works again. (Hotfix for the previous version, now it should work for image documents as well.)&lt;br /&gt;
** Fixed an issue where hotspots and annotations are not shown the first time browsing to a document using customized Xamls.&lt;br /&gt;
* 3.5.14 on 2019-08-02&lt;br /&gt;
** For compatibility reasons, we have reverted one change from 3.5.11, namely &amp;quot;Errors in custom XAML templates...&amp;quot; which will be postponed into the next major release.&lt;br /&gt;
* 3.5.18 on 2019-08-20&lt;br /&gt;
** It is now possible to disable the automatic filter criteria for queries. &lt;br /&gt;
** Fixed an issue where the distance to Direct AR-Markers was shown in Pixels instead of meters&lt;br /&gt;
* 3.5.19 on 2019-08-26&lt;br /&gt;
** Change the highlighting of selected hotspots&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:Version 3.5|Version 3.5 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21539</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21539"/>
				<updated>2019-08-08T09:00:41Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Functionality related */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;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 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;
&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;
=== 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;
=== Hotspotting ===&lt;br /&gt;
&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;
=== Remember Scroll Position of ListView ===&lt;br /&gt;
&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;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;ListView&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;/ListView&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;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21538</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21538"/>
				<updated>2019-08-08T08:48:48Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Content creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content creation === &lt;br /&gt;
{{Version/AndroidSince|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 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;
&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;
&lt;br /&gt;
=== Hotspotting ===&lt;br /&gt;
&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;
=== Remember Scroll Position of ListView ===&lt;br /&gt;
&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;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
     &amp;lt;ListView&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;/ListView&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;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Developer_Mode&amp;diff=21489</id>
		<title>Developer Mode</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Developer_Mode&amp;diff=21489"/>
				<updated>2019-07-26T10:07:41Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Stages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The developer mode provides certain features to help customizing the {{UBIK}} UI and is therefore only meant to be accessed by project engineers and developers.&lt;br /&gt;
&lt;br /&gt;
== Stages ==&lt;br /&gt;
The developer mode can be reached by hitting {{key press|F12}} / {{key press|Ctrl}}+{{key press|F12}}{{Version/WinXSince|3.6}}. When hit for the first time, developer mode is in Stage 1, when hit again it will be in Stage 2. When hit for the third time, developer mode is switched off again (Stage 0).&lt;br /&gt;
&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
If there are lists currently displayed, the templates of the list items will be highlighted.&lt;br /&gt;
&lt;br /&gt;
=== Stage 2 ===&lt;br /&gt;
The area templates will be highlighted; if there are lists currently displayed, its item templates will not be visible.&lt;br /&gt;
&lt;br /&gt;
=== Stage 3 {{Version/WinXSince|3.6}} ===&lt;br /&gt;
The template of the whole page will be highlighted (Only available on some pages, e.g. ChildPage)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Stage 1 !! Stage 2 !! Stage 3 !! Stage 0 (non-developer mode)&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Stage 1.png|335x230px]] || [[File:Stage 2.png|335x230px]] || [[File:Stage 3.png|335x230px]] || [[File:Stage 0.png|335x230px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|Developer Mode]]&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
[[File:UBIK_WinX_UI_DeveloperMode_Template_Button.png|thumb|Template button and its flyout]]&lt;br /&gt;
[[File:UBIK_WinX_UI_DeveloperMode_ConText_Button.png|thumb|Context button and its flyout]]&lt;br /&gt;
In developer mode, all templates on a certain page will be highlighted as a crossed-out green area with two buttons. The top/template button allows to edit the XAML file behind the respective area, and the bottom/context button allows to browse the properties, methods and commands of the underlying ViewModel/Context.&lt;br /&gt;
&lt;br /&gt;
=== XAML Files ===&lt;br /&gt;
When pressing the edit button in the flyout with the name of the XAML file, the following will happen:&lt;br /&gt;
* If this template doesn't have a customized XAML file yet, {{UBIK}} will copy its default XAML definition into the customizing folder, open the explorer and highlight it. From there you can use any text editor to modify it;&lt;br /&gt;
* If there is already a customized XAML file for this template, UBIK will ask whether you want to open the existing file or if you want to replace the existing file with the default XAML definition of this template again.&lt;br /&gt;
&lt;br /&gt;
{{Hint|If you switch on developer mode stage 2 on a page where a [[SYSCLS_CHILDAREATEMPLATE|custom child area template]] is used, that custom name is displayed instead of the default &amp;quot;UBIKChildArea&amp;quot; text.}}&lt;br /&gt;
&lt;br /&gt;
=== Browsing the ViewModel/Context ===&lt;br /&gt;
When pressing the button with the name of the ViewModel/Context, {{UBIK}} will open a browser that allows you to explore all its public properties, methods and commands. Tapping on a member will pin that member and browse a level deeper. Tapping on the button on the left side of the member name, will trigger the following:&lt;br /&gt;
* If the member is a property {{key press|P}} or method {{key press|M}} , its path will be copied to the expression field on top of the browser and its result will be instantly evaluated;&lt;br /&gt;
* If the member is a command {{key press|C}} the browser will navigate to its respective Execute method. Tapping the button of the Execute method will invoke the command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of all possible member types.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;60%&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| Converter || [[File:UI_WinX_DeveloperMode_Converter.png|300x42px]] || All converters that can be used in the current XAML context. They are only displayed at the top level.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| Obsolete || [[File:UI_WinX_DeveloperMode_Obsolete.png|300x42px]] || All members marked red are obsolete and recommended not to be used anymore.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| Property || [[File:UI_WinX_DeveloperMode_Property.png|300x42px]] || Public properties that can be inspected.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| Method || [[File:UI_WinX_DeveloperMode_Method.png|300x42px]] || Includes both the command related methods and all other public methods.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| Command || [[File:UI_WinX_DeveloperMode_Command.png|300x42px]] || Performs a certain task, e.g. navigating back to the previous page, taking a picture. Every one of them has a corresponding &amp;quot;Execute''[CommandName]''&amp;quot; method which actually executes the command.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Hint|You can hover over a member in the list to get more information such as its description, usage, hints, etc.&lt;br /&gt;
* When hovering over an obsolete member, you will find a suggested replacement.}}&lt;br /&gt;
&lt;br /&gt;
[[File:UI_WinX_DeveloperMode_Example.png|thumb|An example of searching &amp;amp; evaluating]]&lt;br /&gt;
==== Search field ====&lt;br /&gt;
The second text field (the one that says &amp;quot;Search...&amp;quot;) in the browser can be used as a filter to reduce the number of members displayed in the list.&lt;br /&gt;
* The search occurs as you type and the search text is '''case insensitive''';&lt;br /&gt;
* Only members whose names contain the entered search text are shown in the list;&lt;br /&gt;
* The already pinned members are not filtered.&lt;br /&gt;
&lt;br /&gt;
==== Expression field ====&lt;br /&gt;
The text field on top (the one that says &amp;quot;Enter expression...&amp;quot;) allows direct input of an expression to be evaluated.&lt;br /&gt;
* The evaluation occurs as you type and the expression text is '''case sensitive''';&lt;br /&gt;
* The context used for evaluating the expression does not change as you browse further into the list;&lt;br /&gt;
* The result of the evaluation (if there is any and it's not null) is displayed below the expression field.&lt;br /&gt;
&lt;br /&gt;
==== Usage example ====&lt;br /&gt;
An example is shown in the picture. The template involved is UBIKChildArea and the context is a ContentPageViewModel.&lt;br /&gt;
* The search text &amp;quot;number&amp;quot; filters the list of members under ContentPageViewModel.ClassificationHandler.ChildInformation and only &amp;quot;NumberOfDocuments&amp;quot; and &amp;quot;NumberOfNonDocuments&amp;quot; are shown;&lt;br /&gt;
* The expression text &amp;quot;ClassificationHandler.ChildInformation.NumberOfNonDocuments&amp;quot; evaluates to 2 because the context object of this ContentPageViewModel carries [[SYSCLS_CHILDINFOOWNER|child information]] and has two non document child objects;&lt;br /&gt;
* The result &amp;quot;2&amp;quot; is a [https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/built-in-types-table primitive type] and the string representations of these values are shown. For other types, you might see their type names instead unless they have their own ToString() implementations;&lt;br /&gt;
* You can browse to the level shown in the example and then click on the {{key press|P}} next to &amp;quot;NumberOfNonDocuments&amp;quot;. Or you can simply type in the above mentioned expression text at any level. Both would yield the same result;&lt;br /&gt;
* If an expression is successfully evaluated here, you can use the same text for bindings in the relevant template (UBIKChildArea in this case) and expect the same result.&lt;br /&gt;
&lt;br /&gt;
{{Hint|You can safely type expressions directly in the field. However, you might be constantly interrupted since the evaluation is done as you type. For example, a dialog can be shown because of a command. In such cases, you might want to finish the expression elsewhere and then copy/paste it into the field.}}&lt;br /&gt;
&lt;br /&gt;
{{Hint|As mentioned, the name of the context is not required at the beginning of the expression. However, it is required when you nest an expression in another one as its parameter. For example, you can enter &amp;quot;ExecuteShowMessageBoxCommand(Context.AppVersion)&amp;quot; to display the app version in a dialog. The &amp;quot;Context&amp;quot; keyword is needed for evaluating the parameter expression &amp;quot;AppVersion&amp;quot;.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Errors {{Version/WinXSince|3.6}} ===&lt;br /&gt;
&lt;br /&gt;
Since custom templates are always loaded on demand, there is no way for UBIK upfront to check whether it contains errors or not. This section lists the possible errors and the respective behavior of UBIK.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_WinX_ErrorTemplateNotFound.png|thumb|Error for a non-existing requested template]]&lt;br /&gt;
==== Missing template ====&lt;br /&gt;
&lt;br /&gt;
if an object requests a special template, e.g. through the [[SYSCLS_CHILDAREATEMPLATE|child area template classification]], UBIK will try to locate the respective file in the XAML customizing folder of the current profile. If the file doesn't exist, it will display a red error box in the respective area.&lt;br /&gt;
&lt;br /&gt;
{{Hint|Clicking the {{key press|Edit XAML}} button will in this case create an empty template with the requested template name in the XAML customizing folder!}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UI_WInX_ErrorTemplate.png|thumb|Parsing error in a requested template]]&lt;br /&gt;
==== Parsing errors ====&lt;br /&gt;
&lt;br /&gt;
If there is a syntax error in the XAML template, UBIK will try to surface the error message into the error template. This will most likely include a reference to the position in the XAML text that caused the error.&lt;br /&gt;
&lt;br /&gt;
==== Runtime errors ====&lt;br /&gt;
&lt;br /&gt;
These are the only errors that will lead inevitably to a crash of the App. An example for this would that your template tries to reference a ''StaticResource'' that doesn't exist.&lt;br /&gt;
However, UBIK will still try to write the full exception message to [AppInstallPath]\LocalState\UBIKDebug.log before termination, thus the corrupted line can again be easily identified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other features ==&lt;br /&gt;
By hitting {{key press|F5}}, all templates on the currently displayed page will be disposed of and reloaded. So if a customized XAML template file was changed, this change will be immediately reflected in the UI.&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|Developer Mode]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=File:Stage_1.png&amp;diff=21487</id>
		<title>File:Stage 1.png</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=File:Stage_1.png&amp;diff=21487"/>
				<updated>2019-07-26T09:46:04Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=File:Stage_2.png&amp;diff=21488</id>
		<title>File:Stage 2.png</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=File:Stage_2.png&amp;diff=21488"/>
				<updated>2019-07-26T09:46:04Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=File:Stage_0.png&amp;diff=21486</id>
		<title>File:Stage 0.png</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=File:Stage_0.png&amp;diff=21486"/>
				<updated>2019-07-26T09:46:03Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=File:Stage_3.png&amp;diff=21485</id>
		<title>File:Stage 3.png</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=File:Stage_3.png&amp;diff=21485"/>
				<updated>2019-07-26T09:46:02Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21460</id>
		<title>Version 3.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21460"/>
				<updated>2019-07-10T13:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Initial Release */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|There are breaking XAML template changes in this version. If you use any customized XAMLs from older versions, they should be updated according to breaking changes. }}&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* Position and Orientation information of seperate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter. &lt;br /&gt;
* It is now possible to persist the scroll position of a ListView when browsing through the content hierarchy. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The element in the middle of the screen within a !ListView is memorised. With this information the scroll position is memorised. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The feature of [[Login_View#UWP_.26_Xamarin_clients|remembering user credentials]] is redesigned.&lt;br /&gt;
* The GlobalStatusBar can now be fully customized in the template: &amp;quot;UBIKGlobalStatusBar.xaml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue when clicking on ListViewItem in ZoomedOutListView it does not navigate, when clicking on the right side of the object&lt;br /&gt;
&lt;br /&gt;
[[Category:Version 3.6|Version 3.6 (WinX)]]&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
&lt;br /&gt;
= Breaking changes =&lt;br /&gt;
&lt;br /&gt;
*  If the template &amp;quot;UBIKMainArea.xaml&amp;quot; has been customized, in the xaml all references to &amp;quot;Root&amp;quot; need to be updated to &amp;quot;contentPage&amp;quot;, like: &amp;quot;{Binding ElementName=Root needs to be changed to &amp;quot;{Binding ElementName=contentPage&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:Version 3.6|Version 3.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21459</id>
		<title>Version 3.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21459"/>
				<updated>2019-07-10T12:58:05Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|There are breaking XAML template changes in this version. If you use any customized XAMLs from older versions, they should be updated according to breaking changes. }}&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* Position and Orientation information of seperate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter. &lt;br /&gt;
* It is now possible to persist the scroll position of a ListView when browsing through the content hierarchy. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The element in the middle of the screen within a !ListView is memorised. With this information the scroll position is memorised. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The feature of [[Login_View#UWP_.26_Xamarin_clients|remembering user credentials]] is redesigned.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue when clicking on ListViewItem in ZoomedOutListView it does not navigate, when clicking on the right side of the object&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
&lt;br /&gt;
= Breaking changes =&lt;br /&gt;
&lt;br /&gt;
*  If the template &amp;quot;UBIKMainArea.xaml&amp;quot; has been customized, in the xaml all references to &amp;quot;Root&amp;quot; need to be updated to &amp;quot;contentPage&amp;quot;, like: &amp;quot;{Binding ElementName=Root needs to be changed to &amp;quot;{Binding ElementName=contentPage&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:Version 3.6|Version 3.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21458</id>
		<title>Version 3.6 (WinX)</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=Version_3.6_(WinX)&amp;diff=21458"/>
				<updated>2019-07-10T12:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Attention|There are breaking XAML template changes in this version. If you use any customized XAMLs from older versions, they should be updated according to [[XAML_Changes_in_UBIK_WinX_3.6|these instructions]]. }}&lt;br /&gt;
&lt;br /&gt;
= Initial Release =&lt;br /&gt;
=== New features ===&lt;br /&gt;
* Position and Orientation information of seperate source systems (GPS, Compass, AR-Markers, etc.) are now combined based on their probabilistic error levels using an Extended Kalman Filter. &lt;br /&gt;
* It is now possible to persist the scroll position of a ListView when browsing through the content hierarchy. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The element in the middle of the screen within a !ListView is memorised. With this information the scroll position is memorised. But the ListView does need an unique identifying name (x:name) to work properly. Furthermore, if list elements depend on other UI-elements those have to be created above the ListView in the XAML.&lt;br /&gt;
* The feature of [[Login_View#UWP_.26_Xamarin_clients|remembering user credentials]] is redesigned.&lt;br /&gt;
&lt;br /&gt;
=== Bugfixes ===&lt;br /&gt;
* Fixed an issue when clicking on ListViewItem in ZoomedOutListView it does not navigate, when clicking on the right side of the object&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Build History =&lt;br /&gt;
&lt;br /&gt;
= Breaking changes =&lt;br /&gt;
&lt;br /&gt;
*  If the template &amp;quot;UBIKMainArea.xaml&amp;quot; has been customized, in the xaml all references to &amp;quot;Root&amp;quot; need to be updated to &amp;quot;contentPage&amp;quot;, like: &amp;quot;{Binding ElementName=Root needs to be changed to &amp;quot;{Binding ElementName=contentPage&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:Version 3.6|Version 3.6 (WinX)]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21311</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21311"/>
				<updated>2019-05-09T15:09:36Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Functionality related */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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 like the following.&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;
&lt;br /&gt;
Notice here that &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 like the following.&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content creation ===&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 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;
&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;
=== Hotspotting ===&lt;br /&gt;
&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;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21296</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21296"/>
				<updated>2019-05-08T05:10:34Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Content creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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 like the following.&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;
&lt;br /&gt;
Notice here that &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 like the following.&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content creation ===&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 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;
&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;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21288</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21288"/>
				<updated>2019-05-07T08:31:24Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Content creation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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 like the following.&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;
&lt;br /&gt;
Notice here that &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 like the following.&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content creation ===&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 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;
&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 Grid.Column=&amp;quot;3&amp;quot; Icon=&amp;quot;PreviewLink&amp;quot; Style=&amp;quot;{ThemeResource UBIKGlobalChildAppBarAppBarButton}&amp;quot; x:Key=&amp;quot;createChildButton&amp;quot; Visibility=&amp;quot;Visible&amp;quot;&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 Margin=&amp;quot;-15&amp;quot; BorderThickness=&amp;quot;0&amp;quot; ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot; SelectionMode=&amp;quot;None&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 UID}&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;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21287</id>
		<title>XAML Tips</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=XAML_Tips&amp;diff=21287"/>
				<updated>2019-05-07T08:29:42Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: /* Functionality related */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Functionality related ==&lt;br /&gt;
&lt;br /&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 like the following.&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;
&lt;br /&gt;
Notice here that &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 like the following.&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;
=== Fit mode ===&lt;br /&gt;
If you are using the standard app without XAML customizings, the [[UBIK_WinX_Client_Basics#Fit_Mode|fit mode]] feature should work out of the box.&lt;br /&gt;
However, when using a FlipView for displaying documents in your customized XAMLs, you must make sure to include the following binding to the FlipView's ItemTemplate so that the fit modes are properly applied.&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:hs=&amp;quot;using:UBIK.WinX.HotSpotting.Document&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Grid.Resources&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;DataTemplate x:Key=&amp;quot;FlipDocItemTemplate&amp;quot;&amp;gt;&lt;br /&gt;
            ...&lt;br /&gt;
            &amp;lt;hs:Document&lt;br /&gt;
                ...&lt;br /&gt;
                FitMode=&amp;quot;{Binding DocumentViewModel.FitMode}&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;/Grid.Resources&amp;gt;&lt;br /&gt;
&amp;lt;/DataTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content creation ===&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 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;
&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 Grid.Column=&amp;quot;3&amp;quot; Icon=&amp;quot;PreviewLink&amp;quot; Style=&amp;quot;{ThemeResource UBIKGlobalChildAppBarAppBarButton}&amp;quot; x:Key=&amp;quot;createChildButton&amp;quot; Visibility=&amp;quot;Visible&amp;quot;&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 Margin=&amp;quot;-15&amp;quot; BorderThickness=&amp;quot;0&amp;quot; ItemsSource=&amp;quot;{Binding Source={StaticResource PlantMapView}}&amp;quot; SelectionMode=&amp;quot;None&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 UID}&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;
&lt;br /&gt;
== Performance related ==&lt;br /&gt;
&lt;br /&gt;
=== FlipView ===&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;
&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;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	<entry>
		<id>https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21233</id>
		<title>UBIK WinX Client Basics</title>
		<link rel="alternate" type="text/html" href="https://wikitest.augmensys.com/index.php?title=UBIK_WinX_Client_Basics&amp;diff=21233"/>
				<updated>2019-04-03T08:39:28Z</updated>
		
		<summary type="html">&lt;p&gt;CWU: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UBIK}} Client is the mobile application for viewing and modifying data, showing documents, starting navigation, visualizing POIs and much more.&lt;br /&gt;
&lt;br /&gt;
Client applications are available for Android and WinX, however the features available on each of the platform dependent applications might differ. An overview of the available features can be found in the [[Client_Feature_Table|feature comparison table]].&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
Users need to login in order to access confidential data, this can be done in the [[Login View]].&lt;br /&gt;
&lt;br /&gt;
== Profiles ==&lt;br /&gt;
Profiles are used to store connection information for {{UBIK}} services. It specifies the location where to find the service along with other useful informations. Profiles are stored by UBIK whenever the user created connection information and stored it in the settings. However, profiles can also be created and edited with any text editor. Possible settings to be defined are:&lt;br /&gt;
* InternalConnectionSettings: Connections settings how to connect to the Content and the USAM service that has been set up.&lt;br /&gt;
** Application: the [[APPLICATION]] to use with the service&lt;br /&gt;
** AuthenticationPort: Port Number of the authentication (USAM) service (default: 777)&lt;br /&gt;
** AuthenticationProtocol: Protocol of the authentication service (default: https)&lt;br /&gt;
** AuthenticationServer: the ip address of the authentication server&lt;br /&gt;
** AuthenticationService: the path to the authentication service&lt;br /&gt;
** ContentPort: Port Number of the content service (default: 777)&lt;br /&gt;
** ContentProtocol: Protocol of the content service (default: https)&lt;br /&gt;
** ContentServer: the ip address of the content server&lt;br /&gt;
** ContentService: the path to the content service&lt;br /&gt;
** Context: the [[CONTEXT]] to use with the service&lt;br /&gt;
** SyncMode: the used sync mode (Online [= Auto], Manual, Offline; default:Online)&lt;br /&gt;
* IsDefault: true, if the profile should be the default profile&lt;br /&gt;
* Name: the name of the profile (will also be used to identify the database)&lt;br /&gt;
** If the profile name contains invalid characters like: /, &amp;quot;, &amp;lt;, &amp;gt;, ... they will be replaced with %_&lt;br /&gt;
* Project: the project name. Use this to share a single project name with more than one profile. If the project is defined, all profile with the same project will share one database.&lt;br /&gt;
* Customizing: the XAML subfolder to use for customized UI. This parameter can be used to share one single XAML customizing folder for multiple profiles.&lt;br /&gt;
* ShowHiddenSettings: show hidden settings (feault: false)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Profile xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/UBIK.WinX.Settings&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Customizing&amp;gt;MYAPPLICATIONUI&amp;lt;/Customizing&amp;gt;&lt;br /&gt;
  &amp;lt;Description i:nil=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;InternalConnectionSettings&amp;gt;&lt;br /&gt;
    &amp;lt;Application&amp;gt;APP_DEMO&amp;lt;/Application&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationPort&amp;gt;777&amp;lt;/AuthenticationPort&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationProtocol&amp;gt;https&amp;lt;/AuthenticationProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationServer&amp;gt;80.243.175.50&amp;lt;/AuthenticationServer&amp;gt;&lt;br /&gt;
    &amp;lt;AuthenticationService&amp;gt;UBIK/DBG/AUG/DEMO.250/USAM/USAM.svc&amp;lt;/AuthenticationService&amp;gt;&lt;br /&gt;
    &amp;lt;ContentPort&amp;gt;777&amp;lt;/ContentPort&amp;gt;&lt;br /&gt;
    &amp;lt;ContentProtocol&amp;gt;https&amp;lt;/ContentProtocol&amp;gt;&lt;br /&gt;
    &amp;lt;ContentServer&amp;gt;80.243.175.50&amp;lt;/ContentServer&amp;gt;&lt;br /&gt;
    &amp;lt;ContentService&amp;gt;UBIK/DBG/AUG/DEMO.250/CONTENT/UBIKContent.svc&amp;lt;/ContentService&amp;gt;&lt;br /&gt;
    &amp;lt;Context&amp;gt;CXT_DEMO&amp;lt;/Context&amp;gt;&lt;br /&gt;
    &amp;lt;SyncMode&amp;gt;Online&amp;lt;/SyncMode&amp;gt;&lt;br /&gt;
  &amp;lt;/InternalConnectionSettings&amp;gt;&lt;br /&gt;
  &amp;lt;IsDefault&amp;gt;true&amp;lt;/IsDefault&amp;gt;&lt;br /&gt;
  &amp;lt;Name&amp;gt;DEMO.250.AT&amp;lt;/Name&amp;gt;&lt;br /&gt;
  &amp;lt;Project&amp;gt;DEMO.250&amp;lt;/Project&amp;gt;&lt;br /&gt;
  &amp;lt;ShowHiddenSettings&amp;gt;false&amp;lt;/ShowHiddenSettings&amp;gt;&lt;br /&gt;
&amp;lt;/Profile&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Content Browser ==&lt;br /&gt;
Allows to navigate through the entire data model in a hierarchical manner, as it is published by the server.&lt;br /&gt;
&lt;br /&gt;
Initially, a list of objects (&amp;quot;root objects&amp;quot;) is shown. Upon selecting an object, a new browser is opened for that object, showing details about it. When an object is selected in the content browser, it is called the browser's context. For such a contextual object, child objects and selected properties are shown. Also, there is a context menu providing actions related to the currently selected object. &lt;br /&gt;
&lt;br /&gt;
=== Status Bar ===&lt;br /&gt;
[[File:UI_WinX_DbSavingIndicator.PNG|300 px|thumb|border|alt=Saving Symbol|Saving Symbol]]&lt;br /&gt;
{{Version/WinXSince|2.5.4}}Whenever content is being saved into the local database (for example, after a branch is downloaded from the server), there will be a blinking symbol indicating the saving activity is happening in the background.&lt;br /&gt;
During that time, the user is advised to not logout or close the app because the content might be lost otherwise. However, it is okay to undertake other tasks such as browsing, editing or downloading branches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Child Page ===&lt;br /&gt;
&lt;br /&gt;
[[File:ChildPage.PNG|400 px|thumb|border|alt=Child Page|Child Page]]&lt;br /&gt;
&lt;br /&gt;
The child page shows the context of a selected object. &lt;br /&gt;
&lt;br /&gt;
The global status bar shows the icon, the name and the description of the selected object. An arrow on the left side allows the user to navigate back to the parent object. On the right side the currently logged-in user is indicated. By clicking on the username one is able to navigate back to the home screen or log off.&lt;br /&gt;
&lt;br /&gt;
The right side of the child page shows child objects of the current object. Each child object is represented by an icon, a name and a description. &lt;br /&gt;
&lt;br /&gt;
On the left side of the child page the current object´s high priority properties are shown. By clicking on a live value property, the live value details dialog opens. By clicking on an editable [[UBIK_WinX_Client_Basics#High_priority_properties| high priority property]], an editor opens {{Version/WinXSince|2.5.4}}. If a property was edited a save button is shown in the lower left corner, allowing the user to commit the changes. If a property of a query object was edited an evaluate button is shown in the lower left corner, allowing the user to run the query with the changed propery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Details Page ===&lt;br /&gt;
&lt;br /&gt;
=== Context Menu ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
==== Root objects vs child objects ====&lt;br /&gt;
&lt;br /&gt;
The first entry point in the ''Content Browser'' is the list of root objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Task objects ====&lt;br /&gt;
&lt;br /&gt;
==== Query objects ====&lt;br /&gt;
&lt;br /&gt;
==== Safety relevant objects ====&lt;br /&gt;
&lt;br /&gt;
==== Commissioning objects ====&lt;br /&gt;
&lt;br /&gt;
==== Locked objects ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Properties ===&lt;br /&gt;
&lt;br /&gt;
==== Live value properties ====&lt;br /&gt;
&lt;br /&gt;
==== High priority properties ====&lt;br /&gt;
High priority properties are properities having a priority higher than the [[Settings#Content |priority threshold]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Selective List Properties ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Properties with value records {{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_PropertyWithValueRecords.png|thumb|A property with value records]]&lt;br /&gt;
[[File:UI_WinX_PropertyValueRecords.png|thumb|Property value records dialog]]&lt;br /&gt;
In addition to its value, a property might also bring along a series of value records showing &amp;quot;who changed the value at what time&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When such records exist, the property row shows a special symbol on the right side. After a right click (with mouse) or a long tap (with touch) on the property row, a dialog will be shown to present these records (sorted by their time, recent ones on top).&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Editors ====&lt;br /&gt;
&lt;br /&gt;
===== Geo Editor &amp;amp; Teach In =====&lt;br /&gt;
&lt;br /&gt;
==== Guid editor ====&lt;br /&gt;
[[File:Guid_property_dialog.PNG|thumb|border|alt=Guid property editor dialog|Guid property editor dialog]]&lt;br /&gt;
&lt;br /&gt;
To edit Guid properties (that do not have a selective list available), we have implemented a special system. Since a Guid property always just contains the Guid as a reference to another object, we can use a query to find the object we want to assign to this property.&lt;br /&gt;
&lt;br /&gt;
When the Guid property has a FilterQuery datamember (which should contain the guid of a query), it will become editable through this query. Note that this FilterQuery guid will not actually be visible in the client. All this should be setup in the backend, the client has no control over this.&lt;br /&gt;
&lt;br /&gt;
When clicking an editable Guid property, you will see a dialog with up to 3 extra buttons added (see image):&lt;br /&gt;
&lt;br /&gt;
;View Object&lt;br /&gt;
:This button will be enabled when there is a valid guid assigned to the property. Clicking this button will immediately navigate to the referenced object.&lt;br /&gt;
;Edit Property&lt;br /&gt;
:If the property has a valid FilterQuery assigned to it, clicking this button will launch that query. If no FilterQuery is assigned, this button will be invisible.&lt;br /&gt;
;Clear Property Value&lt;br /&gt;
:If the property has a guid assigned, the user can press this button to reset the value back to empty.&lt;br /&gt;
&lt;br /&gt;
Additionally, if a valid FilterQuery is assigned, the user will see the results of that query ''inline'', if the query delivers 200 results or fewer. The user can select an item from this horizontally scrollable list, and press &amp;quot;OK&amp;quot; to assign the UID of the selected object to the Guid property. This is useful for cases where the user does not want to jump into the full query to be able to select an object.&lt;br /&gt;
&lt;br /&gt;
If the user does choose to launch the full query page (or if the query returns over 200 objects), they can click any of the displayed items in the query's child list. When clicking one of them, it will immediately be set as the reference in the original Guid property. To cancel selecting an item (and stop editing the property), simply navigate to any other page (by pressing back, using navigation bar, etc).&lt;br /&gt;
&lt;br /&gt;
{{hint|'''Skipping the dialog'''&lt;br /&gt;
If editing the property in a query page without having to go through the dialog is desired, one can customize the boolean variable &amp;quot;SkipQueryDialog&amp;quot; in UBIKThemes.xaml. If none can be found, simply add the following line into its &amp;quot;Default&amp;quot; ResourceDictionary.&lt;br /&gt;
&amp;lt;source lang = &amp;quot;xml&amp;quot;&amp;gt;&amp;lt;x:Boolean x:Key=&amp;quot;SkipQueryDialog&amp;quot;&amp;gt;True&amp;lt;/x:Boolean&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documents ===&lt;br /&gt;
UBIK supports and displays document objects and a bunch of actions related to them (editing, redlining, creation, thumbnails, ...).&lt;br /&gt;
&lt;br /&gt;
==== Fit Mode{{Version/WinXSince|3.5}} ====&lt;br /&gt;
By default, documents are displayed in their original dimensions. But administrators can also [[SYSCLS_DOCUMENT_FITMODE|configure different fit modes]] for each document. The following demonstrates how documents can look under different fit modes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; | width = &amp;quot;100%&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Unspecified / Unscaled / Default !! Fit to container !! Fit to width !! Fit to height&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Small.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Small.png|240x225px]]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:UI_WinX_FitMode_Unspecified_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Container_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Width_Large.png|240x225px]] || [[File:UI_WinX_FitMode_Height_Large.png|240x225px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Hint|Double tapping on a document toggles the display between &amp;quot;Fit to width&amp;quot; and the fit mode that document is configured with.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Customizing Possibilities ====&lt;br /&gt;
&lt;br /&gt;
==== Editing{{Version/WinXSince|2.5.4}} ====&lt;br /&gt;
[[File:UI_WinX_EditDocumentButton.png|thumb|Button to edit a document]]&lt;br /&gt;
For [[SYSCLS_EDITABLEDOCUMENT|editable documents]], there is an {{key press|edit}} button in the bottom app bar. It allows the user to edit a document file using the default app of the OS. If a file is changed during the edit, the same {{key press|save}} button appears just like it does for content with changed properties.&lt;br /&gt;
{{Hint|Similar to saving, other app features also apply on edited documents. For example, reverting local changes for an edited document will throw away the changed document file and restore it to the server version.}}&lt;br /&gt;
[[File:UI_WinX_EditDocumentOverlayButton.png|thumb|Edit button in thumbnail overlay]]&lt;br /&gt;
An alternative way to start editing is to right click on a document's thumbnail, which brings up an overlay of buttons, and then select the {{key press|edit}} button. The difference here is that there is no {{key press|save}} button and any changes are automatically saved (and committed if in online mode).&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
==== Offline availability ====&lt;br /&gt;
When a user selects a branch to bring offline, files of all document objects underneath are downloaded in principle. However, they can also be selectively configured to be ignored with a [[SYSCLS_OFFLINE_AVAILABLE_DOCUMENT|classification]] on the server-side. Once a document is classified as offline available, the document file will not be removed when the storage for already synchronized document files is cleared.&lt;br /&gt;
{{Hint|This is not to be confused with the accessibility related to [[User_Rights|user rights]]. The logic here is &amp;quot;some documents '''do not have to''' be downloaded&amp;quot;, not &amp;quot;some documents '''can not''' be downloaded/accessed&amp;quot;. In other words, a user can browse to and open the document regardless of this configuration.}}&lt;br /&gt;
&lt;br /&gt;
==== Clear Online Documents ====&lt;br /&gt;
By clearing the online documents, it is possible to free up system memory if needed. It can be triggered by pressing the button &amp;quot;Clear online documents&amp;quot; in the general settings tab. Online documents are documents already uploaded to the server. They can be downloaded anytime agian when the client is connected to the server. However, documents classified as offline available will not be affected and will always stay on the device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AR Features ==&lt;br /&gt;
&lt;br /&gt;
=== POI View ===&lt;br /&gt;
Brings up the POI View|Augmented Reality view and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Markerless ===&lt;br /&gt;
&lt;br /&gt;
=== Map View ===&lt;br /&gt;
Opens the Map View and displays Points of Interest (POI's) related to the current location of the mobile device.&lt;br /&gt;
&lt;br /&gt;
== Positioning ==&lt;br /&gt;
{{UBIK}} clients use a [[Location_Manager|Location Manager]] in order to gain knowledge about their position, so it can help the user navigate to his/her target.&lt;br /&gt;
&lt;br /&gt;
The user can choose one of different positioning modes optimized for different environments.&lt;br /&gt;
Most of them incorporate multiple technologies for calculating positions or checking their reliability.&lt;br /&gt;
&lt;br /&gt;
=== Positioning modes ===&lt;br /&gt;
&lt;br /&gt;
* ''Use all'' - uses all available position sources&lt;br /&gt;
* ''LLA only mode'' - used for positioning using markers only&lt;br /&gt;
* ''Beacon Proximity mode'' - uses iBeacon proximity and LLA only&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
&lt;br /&gt;
==== GPS ==== &lt;br /&gt;
GPS is used as a primary positioning input source for outdoor areas. Its precision depends on the environment and satellite availability. With good circumstances, the accuracy varies between 1 and 10 meters.&lt;br /&gt;
&lt;br /&gt;
==== LLA markers ==== &lt;br /&gt;
LLA markers basically are QR codes with location data encoded into them - which can be used for positioning when they are scanned.&lt;br /&gt;
&lt;br /&gt;
==== Object Proximity Positioning ====&lt;br /&gt;
The location of nearby Geo-Objects can be used for positioning.&lt;br /&gt;
&lt;br /&gt;
The position of a Geo-Object can be used manually by pushing the button {{key press|Use Location}} in the [[UBIK_WinX_Client_Basics#Context_Menu|Context Menu]]. &lt;br /&gt;
&lt;br /&gt;
The geo information of an object gets used automatically if exactly one single object is found through scanning. If more objects are found, their geo information doesn´t get used. Scanning includes  [[UBIK Client Basics#Bar Code|Bar Code]], [[UBIK Client Basics#QR Code|QR Code]], [[UBIK Client Basics#OCR|OCR]] and [[UBIK Client Basics#RFID|RFID]]. The automatic use of Geo-Object´s location can be turned off by disabling the &amp;quot;EnableObjectProximityPositioning&amp;quot; setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Beacon-Proximity Positioning ====&lt;br /&gt;
The Beacon Proximity Mode detects if the user is in the proximity of a beacon. The proximity region is defined by a proximity distance which creates a sphere around the beacon. Whenever the calculated distance to a beacon is smaller than the proximity distance, the user is supposed to be at the position of the beacon. If multiple regions intersect the user is supposed to be at the position of the nearest beacon. &lt;br /&gt;
In order to use Beacon Proximity as a Positioning System, Bluetooth Low Energy has to be available and enabled on the mobile device. If a new environment should be equipped with iBeacon-Positioning, an expert has to mount iBeacons on known positions and calibrate the propagation factor of these beacons. Proximity beacons can be configured using [[SYSCLS_PROXIMITY_BEACON]]. {{Version/WinXSince|UWP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Finding Objects ==&lt;br /&gt;
=== Free Text Search ===&lt;br /&gt;
&lt;br /&gt;
=== ID Marker ===&lt;br /&gt;
&lt;br /&gt;
=== QR Code ===&lt;br /&gt;
&lt;br /&gt;
=== Bar Code ===&lt;br /&gt;
&lt;br /&gt;
=== RFID Code ===&lt;br /&gt;
Provides a fast and convenient way for users to find objects that are identifiable through [[RFID tags|RFID tags]].&lt;br /&gt;
&lt;br /&gt;
=== OCR ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Client_Feature_Table]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Pages with broken file links|UBIK WinX Client Basics]]&lt;br /&gt;
[[Category:WinX|UBIK WinX Client Basics]]&lt;/div&gt;</summary>
		<author><name>CWU</name></author>	</entry>

	</feed>