Jump to: navigation, search

Changes


XAML

11,092 bytes added, 17 February
/* Differences between Xamarin and UWP */
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]].
== Templates ==
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''
For further information see ''[[ UBIK Templates]]''.
=== General ===
* [[UBIKThemes.xaml]]
Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.
==== AuthenticationPage ====
[[File:AuthenticationPage.PNG|thumb|AuthenticationPage]]* [[UBIKSplashArea.xaml]]* UBIKPageNavigation.xaml-> Deprecated and changed to UBIKHomePageButtons.xaml {{Version/WinXSince|3.0.0}}* UBIKProfileItem.xaml{{clear}} 
=== Content Pages ===
==== RootPage ====
[[File:MainPage.PNG|thumb|RootPage]]
* UBIKMainLeftArea.xaml
* UBIKMainItem.xaml
* UBIKMainItemSmall.xaml
{{clear}}
 
==== ChildPage ====
[[File:ChildPageNew.PNG|thumb|ChildPage]]
* UBIKChildItem.xaml
* UBIKChildItemSmall.xaml
* UBIKChildArea.xaml
* UBIKChildAreaSmall.xaml
* UBIKChildAction.xaml
* UBIKPriorityPropertyItem.xaml
{{clear}}
 
==== DetailsPage ====
== Specific {{UBIK}} Elements Controls ===== Basic ======= CoolGridSplitter (UBIK.WinX.Controls) ====Allows to make rows or columns of a grid user-resizable Example:<source lang = "xml"><uc:CoolGridSplitter x:Name="ChildAreaGridSplitter" Height="10" HorizontalAlignment="Center" VerticalAlignment="Bottom" Background="Transparent" Foreground="White" ResizeBehavior="CurrentAndNext" ResizeDirection2="Rows"/></source> ==== UBIKImageEditor ====<tabs><tab name="UWP">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.One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.<source lang = "xml">xmlns:ctrls="using:UBIK.WinX.UI.Controls"<ctrls:UBIKImageEditor ... xmlns:sfImageEditor="using:Syncfusion.UI.Xaml.ImageEditor"> <sfImageEditor:SfImageEditor.ToolbarSettings> <sfImageEditor:ToolbarSettings IsToolbarVisiblity="False"/> </sfImageEditor:SfImageEditor.ToolbarSettings></ctrls:UBIKImageEditor></source></tab> <tab name="Xamarin">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.One example is to customize the visibility of the toolbar of such an image editor. The following example hides the toolbar.<source lang = "xml">xmlns:ctrls="clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL"<ctrls:UBIKImageEditor ... xmlns:sfImageEditor="clr-namespace:Syncfusion.SfImageEditor.XForms;assembly=Syncfusion.SfImageEditor.XForms"> <sfImageEditor:SfImageEditor.ToolbarSettings> <sfImageEditor:ToolbarSettings IsVisible="false" /> </sfImageEditor:SfImageEditor.ToolbarSettings></ctrls:UBIKImageEditor></source></tab></tabs> The MergeAnnotationsOnSave property allows to configure whether annotations should be shared through the {{UBIK}} property from the respective Annotation classification (''false''), or if they should be merged directly into the original file (''true'', this is the default option): {{Version/WinXSince|3.8.0}} {{Version/XamarinSince|1.2.0}}<source lang = "xml"><ctrls:UBIKImageEditor MergeAnnotationsOnSave="true" <!--true to merge automatically, false to use the classification--> ...</ctrls:UBIKImageEditor></source> [[Category:WinX|XAML]][[Category:XAML|XAML]] ==== UBIKPdfViewer ====<tabs><tab name="UWP">* The Top-Toolbar can be customized by setting: UBIKAppBarBackgroundThemeBrush* The Annotation-Toolbar can be customized by setting: UBIKPdfAnnotationToolbarBackgroundThemeBrush* The color of the buttons in the toolbar is defined by: UBIKAppBarButtonForegroundThemeBrush* The Save button can be hidden with SaveButtonVisibility="Collapsed" * The Annotation button can be hidden with AnnotationButtonVisibility="Collapsed"* The HS button can be hidden with HotspotButtonVisibility="Collapsed"* The undo and redo operations can be turned on/off with IsUndoEnabled="true/false". The default value is false. When turned off, the two relevant buttons will be hidden in the toolbar. {{Version/WinXSince|4.4}} {{Attention|Please be careful when you enable undo and redo. Because {{key press|Ctrl}} + {{key press|Z}} (or whichever other combination in your keyboard layout) is the shortcut to trigger an undo. Therefore, it's possible that you accidentally undo/revert your changes in the PDF viewer when you are typing.}} * The default stroke width for Annotations can be defined with the AnnotationDefaultStrokeWidth property in the UBIKThemes.xaml:<source lang = "xml"><x:Double x:Key="AnnotationDefaultStrokeWidth">1</x:Double></source></tab> <tab name="Xamarin">On a Xamarin UBIKPdfViewer instance (e.g. in the UBIKDocumentContentArea template), you can configure its EnableSeparateInkStrokes value.* True (default): Every ink stroke has its own session. You can select it and change its color/thickness/transparency/etc. separately from others.* False: If you do not end the session explicitly by exiting the ink mode, all strokes belong in the same session. And they can only be interacted with as a whole.<source lang = "xml">xmlns:ctrls="clr-namespace:UBIK.CPL.Controls;assembly=UBIK.CPL"<ctrls:UBIKPdfViewer ... EnableSeparateInkStrokes="True" /></source></tab> </tabs> [[Category:WinX|XAML]][[Category:XAML|XAML]] === Advanced ======= [[EvalExpression]] ====Allows to evaluate a C# expression in XAML, using any amount of [[EvalExpression#Parameters|EvalExpressionParameters]]   
== Converters ==
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). Initialization of a converter in a XAML file:<source lang ="xml"> <converters:ItemCountLesserThanToVisibilityConverter x:Key="ItemCountLesserThanToColConverter" EqualOrBiggerThan= Basic "Visible" LesserThan===* BooleanToVisibilityConverter"Collapsed" />Converts a Boolean <!-- 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.--> </source><br>Using the ItemCountLesserThanToVisiblity in a visibility attribute:<source lang = "xml"> <Visibility="{Binding Source={StaticResource RootListFilter}, where ''true'' Path=Count, Converter={StaticResource ItemCountLesserThanToColConverter }, ConverterParameter=13, FallbackValue=Collapsed}"/><!--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 result collapse. --> </source><br>Example of an EqualToVisConverter being used in ''order to set the visibility of a grid:<source lang = "xml"> <Grid Visibility="{Binding Values [MP_SCOPECHANGE], Converter={StaticResource EqualToVisConverter}, ConverterParameter=30}"></Grid><!--The grid will be ONLY visible if the value of this MetaProperty equals the value of the converter parameter.Visible''.--> * BooleanToCollapsedConverter</source>Converts <br>Example of a StringFormatConverter, which converts a Boolean value into a Visibilitystring and also accepts a parameter, where ''true'' will result in ''Visibilitythis case the GlobalDateTimeFormat, which ‘tells’ the converter how to format the string:<source lang = "xml"> <TextBlock Grid.Collapsed''Row="1" Text="{Binding Values [MP_LATE_START_MATAP], Converter={StaticResource StringFormatConverter}, ConverterParameter={StaticResource GlobalDateTimeFormat} }"/> </source> === List of all converters ===For a complete and up-to-date list of all converters, please refer to the [[Developer_Mode#Browsing_the_ViewModel.2FContext|developer mode]].  
=== Advanced ===
* [[CollectionToViewConverter]]
Converts a collection into a view that can be filtered using C# expressions Outdated and returns replaced by the (filtered) result[[XAML_Changes_in_UBIK_WinX_3. The object fed into the converter can be referenced in the expression as ''Item''5#Filtering_by_expressions|ListCollectionView]]Example:<source lang = "xml"> <Grid> <Grid.Resources> <!-- Instantiate the converter and bind the Source to the collection we want to use on a UI element of this page --> <converters:CollectionToViewConverter x:Key="ColConv" Source="{Binding Children.Items}" /> </Grid.Resources> <StackPanel Orientation="Horizontal"> <!-- Create a TextBox where we can enter a C# expression --> <TextBox x:Name="FilterQuery" Height="40" MinWidth="240" Margin="0,10,10,0" HorizontalAlignment="Right" VerticalAlignment="Top" FontSize="18" PlaceholderText="Filter" /> <!-- Create a ListView and bind its ItemsSource to the expression pulled through the converter --> <ListView x:Name="ChildListView" HorizontalContentAlignment="Stretch" ItemsSource="{Binding ElementName=FilterQuery, Path=Text, Converter={StaticResource ColConv}}"> </ListView> </StackPanel> </Grid></source>
== Behaviors ==
== Properties ==
* ViewModel** CurrentDateTime: the current {{Hint|The previously listed available properties for binding is removed from here. Since it's more accurate and up-to-date and time** UserName: the current user name** Self: to use the viewmodel itself** AppStatus: [[Developer Mode]] to inspect them in your version of the appplication status view modelclients.}}
* Content=== Accessing PropertyViewModel ===** IsLocked: true, if the content islocked - false, if not** IsReadOnly: true, if the content can be read only - false, if it is writeable** ValueSeries: the value series, if available** MROViewModel: if the content is an MRO related content, this is the sub view model for MRO** GeoDataViewModel: if the content represents a geo object, this is the geo sub view model** MetaDefinition: the meta definition of the content object** Possible Children: collection if meta defintions the user can create new child content Dealing with** ClassificationHandler: a classification handling object** Content: the actual content object embedded in the viewmodel** Icon: the content icon as a byte array** HasIcon: true, if content object has an icon - false, if not** Title: the content objects title** SubTitle: the content objects sub title** OrderId: the order id of the content** GroupId: the group id of the content** DownloadEnabled: true, if download properties is enabled - falsevery common. For example, if not** IsNewObject: true, if the object is created and not yet saved by the user - false, if not** ToCommit: true, if the object is yet you might need to be committed by pressing save - false, if not** OfflineDate: date display all properties of the last offline download** ToSave: true, if the an object is yet . Or you might want to be saved by pressing save - false, if not** ToEvaluateQuery: true, if execute a new query can be evaluated by pressing the sending the query** ActionOverlayExpanded: true, if the action overlay is expanded - false, if not** DeletionAllowed: true, if deletion certain command for one specific property. To do any of the object is allowed - falsethese, if not** RevertLocalChangesAllowed: true, if reverting you first need to get access to the object is allowed - false, if not** IsPictureChildCreationAllowed: true, if the creation of a picture child is allowed - false, if notPropertyViewModel instance(s).
* GeographyList==== ContentViewModel.Properties.XXXItems ====** ItemsSortedByZLevel: true, if the current items There are sorted by z level - falsemultiple collections accessible this way. E.g., if notContentViewModel.Properties.AllItems, ContentViewModel.Properties.VisibleItems (their names should be self-explanatory).
* PolygonItem** FillColor: the fill color From any of these collections, you can also access a specific instance by its property name using bindings such as the polygon** FillTransparency: the transparency if following (assuming the polygon fillingbinding context is a ContentViewModel).
* MRO<code>{Binding Properties.AllItems[PROPERTY_NAME]}</code>** ProjectData** ParentViewModel** Progress** Weight** TechStatus{{Attention|While this works fine and grants you access to the correct instance of PropertyViewModel, it loads all instances for the context object even though only one (PROPERTY_NAME) is requested. So there might be an unnecessary performance lost. If accessing only single instances is needed, the newer collection [[XAML#ContentViewModel.PropertyByName|PropertyByName]] should be preferred.}}
* TaskOwner==== ContentViewModel.PropertyByName {{Version/WinXSince|4.6}}{{Version/XamarinSince|4.6}} ====** OrgaStatus** IsConfirmedThis collection can also be used to access single PropertyViewModel instances using bindings such as the following (assuming the binding context is a ContentViewModel).
* Task** IsBooleanTask** IsInspectionTask** IsProgressReportingTask** IsMeasurementTask** Value** PropertyItem** DisplayValue** PreviousValue** Unit** NotAppliccable** IsTaskFinished** IsValueMIssing<code>{Binding PropertyByName[PROPERTY_NAME]}</code>
* WorkPackage** WPOrgaStatus** CanConfirm{{Attention|Unlike [[XAML#ContentViewModel.Properties.XXXItems|Properties.XXXItems]], this collection loads only the requested instance(s) and should offer better performance.}}
* AlternativeNonDocumentChildrenList=== Editing Properties ===There are currently 3 main ways to trigger property editing (aside from direct editing) in XAML:* AppStatus[[EditPropertyValueCommand]] uses a MetaProperty name as a parameter, to trigger the editing dialogue for that metaproperty. ** InitializingIt is located on the ContentViewModel, and automatically triggers a Save and Commit once the edit is confirmed.** UserAuthenticated * AuthenticationSimilarly, the (PropertyViewModel).ShowEditorCommand/.PropertyClickedCommand triggers the editing dialogue, however, being located on the PropertyViewModel, it is necessary to first access a single property, such as by triggering the command on a list item template, or by directly binding to a specific one using a metaproperty indexer.** LandscapeImageThese two commands are equivalent, the ShowEditorCommand being more general and redirecting for Live Values or properties with Value Records, or else triggering the PropertyClickedCommand.** PortraitImageThese commands can be seen in action as the standard UI for properties when clicking on the icon to trigger "indirect" editing for any individual metaproperty. ** LoginState** LoginType** IsLoggedIn** ShowLoginButton** EnableLoginButton** ShowTeamLoginButton** EnableTeamLoginButton** ShowLogoutButton** EnableLogoutButton** ShowTeamLogoutButton** EnableTeamLogoutButton** StatusText** SplashImage** AppVersion** SyncModes** ContentServiceConfigs** KeyValues** Profiles * BuildingItem** IsValidGeo * BuildingLevelItem** IsSelected** LevelName** LevelShortName** Index** Height** IsValidGeo * BuildingLevelList** LowestLevelItem** ItemsSortedByLevelDescending * ChangedObject** IsSelected * ChildAppBar * ChildrenList** Content * ContentChangeAware * ContentDetailsPage** DocumentScanMode** LastScannedText** LastScannedImage * ContentListItem** CachePreviewDetails** PreviewDetails** SubDocuments* ContentList* ContentPageViewModel* ContentSelectorDialog** IsOpen** SelectionText** SelectedContent** IsOK * Dialog* DocumentChildrenList* DocumentListItem* DocumentPage* EditDialog* GeoContentList* GlobalAppBar* GlobalStatusBar* ListViewModel* MapGeoContentList* MapOverlayItem* MapOverlayList* MapViewModel* NonDocumentChildrenList* OverlayedPOIGroupItemItem* ParentBaseViewModel* POIBaseViewModel* POIGroupItemItem* POIGroupItem* POIItemViewModel* POI* PreviewPage* PropertyListItem* PropertyList* QueryDetailsPage* RootContentList* RootPage* Scan* SearchResultListItem* SearchResultSelection* SearchProperty changes are not saved automatically, but set the ToSave flag on the ContentViewModel, meaning that a SaveAndCommit command is required to commit the changes.* TeamLoginThe [[XAML_Tips#SetPropertyValueCommand|Set Property Value Command]] sets a named property to a specific or calculated (such as through an [[EvalExpression]]) value.
[[Category:WinX|XAML]]
[[Category:XAML|XAML]]
== Commands ==
{{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.}}
* ViewModel** [[NavigateToURICommand]]=== Examples for commands with complex parameters ===
* Content==== CaptureMediaCommand ====** [[NavigateToDetailsCommand]]<tabs>** [[NavigateToChildrenCommand]]<tab name="UWP">** [[NavigateToDocumentCommand]]<source lang = "xml">** [[RevertLocalChangesCommand]]<Button** [[DiscardContentCommand]] ...** [[DeleteContentCommand]] xmlns:controls="using:UBIK.WinX.Controls"** [[SaveAndCommitCommand]]** [[SetPropertyValueCommand]]** [[SetPropertyValueAndValidateCommand]]** [[EvaluateQueryCommand]]** [[ Command="{Binding CaptureMediaCommand]]** [[ShareContentCommand]]** [[ExpandActionOverlayCommand]]}">** [[StartFileEditingCommand]] <Button.CommandParameter>** [[ViewPropertyValueCommand]] <controls:KeyValueList>** [[EditPropertyValueCommand]] <controls:KeyValueParameter Key="MediaCaptureMode" Value="Video" />** [[CreateChildItemCommand]] <controls:KeyValueParameter Key="ChildMetaDefUid" Value="6170a068-2314-4444-ad62-0da99769a048" />** [[ActivateReferenceByScanCommand]] </controls:KeyValueList>** [[ActivateReferenceCommand]] </Button.CommandParameter>** [[ContinueReferenceByScanCommand]]</Button>** [[SetActiveReferenceCommand]]</source>** [[CancelReferenceCommand]]</tab>
* GenericPropertyItem<tab name="Xamarin">** [[ShowValueRecordsCommand]]<source lang = "xml"><Button ... xmlns:classes="clr-namespace:UBIK.CPL.Classes;assembly=UBIK.CPL" Command="{Binding CaptureMediaCommand}"> <Button.CommandParameter> <classes:KeyValueList> <classes:KeyValueParameter Key="MediaCaptureMode" Value="Video" /> <classes:KeyValueParameter Key="ChildMetaDefUid" Value="6170a068-2314-4444-ad62-0da99769a048" /> </classes:KeyValueList> </Button.CommandParameter></Button></source></tab></tabs>
* ContentListItem{{Hint|The KeyValueList parameter is supported only {{Version/WinXSince|3.8}}{{Version/XamarinSince|1.2}}. In previous versions, simple string parameters were supported.}}{{Attention|Whether the creation succeeds also depends on the server configuration. For example, if "** .mp4" is not included as a selective list item in the [[PreviewPropertiesCommandSYSCLS_FILEDOCUMENT|file type]]meta property, video document creation will not be possible. Similarly, audio document creation requires a file type "** [[PreviewDocumentsCommand]]** [[ShowSingleChildDocumentCommand]]** [[ClearPreviewDocumentsCommand]].wav" to be included in the selective list.}}
* ContentListMediaCaptureMode: Photo, Video, Audio. Defaults to Photo if unspecified;* 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.
* ContentPageViewModel** [[BranchDownloadCommand]]** [[DiscardCommandCategory:WinX|XAML]]** [[SetPropertyValueForAllChildrenCommandCategory:XAML|XAML]]
* ContentSelectorDialog== Miscellaneous ==<br>
* Dialog=== Behaviors in style definitions ===It's very common and easy to attach behaviors to different UI controls to extend their functionalities. For example, see [[#Advanced_2|StringFormatConverter]].
* DocumentChildrenListFor better code reusability, it's sometimes necessary to implement the functionality of a control in a style so that it can be applied to the same control used in various occasions. In this case, the regular behaviors won't work and you have to use a special type AttachBehavior with some limitations. Below is such an example.
<tabs><tab name="UWP">In this example, a style for the Grid control is defined with a behavior which executes the EditPropertyValueCommand upon tapped. There are two things to note here:* DocumentListItemWhen attaching multiple behaviors to controls, you have to explicitly declare a BehaviorCollection and place all behaviors underneath. Unlike outside of style definitions, this is mandatory. Without it, only the last behavior will be effective.** [[ShowDocumentCommand]]Bindings work the same way in general. However, it's not possible to bind to named elements through the <code>"{Binding ElementName=someName, Path=..."</code> syntax and there doesn't seem to be a way to achieve similar goals.<source lang = "xml">xmlns:behaviors="using:UBIK.WinX.Behaviors"xmlns:core="using:Microsoft.Xaml.Interactions.Core"<Style x:Key="UBIKNamePropertyGrid" TargetType="Grid"> <Setter Property="behaviors:AttachBehavior.Behaviors"> <Setter.Value> <behaviors:BehaviorCollection> <core:EventTriggerBehavior EventName="Tapped"> <core:InvokeCommandAction Command="{Binding EditPropertyValueCommand}" CommandParameter="MP_NAME" /> </core:EventTriggerBehavior> </behaviors:BehaviorCollection> </Setter.Value> </Setter></Style></source></tab></tabs><br>
* DocumentPage=== UBIKContentControl ===** [[StartRedliningCommand]]In UWP XAML, one often uses a <code><ContentControl ... ContentTemplateSelector="{StaticResource TaskPropertyTemplateSelector}" /></code> to choose different templates depending on the binding context.However, it seems to have its limit, namely the template selection happens only once at the beginning. In other words, the template will not change even when the binding context later changes and another template would be the choice.* EditDialogFor such scenarios, we have created a UBIKContentControl. See the example below.** [[OKPressedCommand]]<tabs>** [[ResetPressedCommand]]<tab name="UWP">** [[CancelPressedCommand]]When the IsLocked status changes on the ContentViewModel, the task direct edit template will be reselected.** [[ChangeEditorModeCommand]]<source lang = "xml">xmlns:controls="using:UBIK.WinX.Controls"* GeoContentList<controls:UBIKContentControl Content="{Binding MROViewModel}"* GlobalAppBar ContentTemplateSelector="{StaticResource TaskPropertyTemplateSelector}" TemplateReselectTrigger="{Binding IsLocked}" />* GlobalStatusBar</source></tab>* ListViewModel</tabs> * MapGeoContentList * MapOverlayItem * MapOverlayList * MapViewModel * NonDocumentChildrenList * OverlayedPOIGroupItemItem * ParentBaseViewModel * POIBaseViewModel** [[ShowDirectionsCommand]]** [[ShowDrivingDirectionsCommand]]** [[ShowWalkingDirectionsCommand]]** [[UseGeoPositionCommand]]** [[NavigateToContentCommand]]** [[OpenPOIGroupCommand]]** [[ExitPOIGroupCommand]]** [[EnterBuildingCommand]] * POIGroupItemItem * POIGroupItem<br>
* POIItemViewModel== Custom Icons ==** Moved to article [[RefreshCommandXAML_Tips#Custom_Icons]].<br><br>
* POI[[Category:WinX|XAML]][[Category:XAML|XAML]]
* PreviewPage== Differences between Xamarin and UWP =={{UnderConstructionStart}}
* PropertyListItemAs 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 (-> 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.** More specific documentations about Xamarin Customizing can be found under [[ViewPropertyValueCommand]]** [[PropertyClickedCommand]]** [[PropertyRightClickedCommand]]** [[PriorityPropertyClickedCommand]]** [[PriorityPropertyRightClickedCommandXamarin XAML]].
* PropertyList{{Attention|Please consider that Xamarin.UWP is not an official product and therefore it can't be guaranteed that all our features work without issues.}}
* QueryDetailsPage{{UnderConstructionEnd}}
* RootContentList[[Category:WinX|XAML]][[Category:XAML|XAML]]
* RootPage== Namespace changes == Starting from the UBIK UWP client{{Version/WinXSince|3.0.0}}, we have restructured & 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.
* Scan{| class="wikitable" | width = "75%"|-! !!style="text-align:left;"|V.2.6!!style="text-align:left;"|V.3.0|-|rowspan="13" style="text-align:center;"|Name-<br/>space<br/>prefix|''UBIK.Win8''||''UBIK.WinX''|-|''UBIK.WinX.UI''||''UBIK.UI''|-|''UBIK.WinX.Utility''||''UBIK.Utility''|-|''UBIK.WinX.Library''||''UBIK.Library''|-|''UBIK.WinX.DataProvider''||''UBIK.DataProvider''|-|''UBIK.WinX.SyncHandler''||''UBIK.SyncHandler''|-|''UBIK.WinX.DatabaseConnector''||''UBIK.DatabaseConnector''|-|''UBIK.WinX.ContentDatabase''||''UBIK.ContentDatabase''|-| ''UBIK.WinX.MRO''||''UBIK.MRO''|-| ''UBIK.WinX.Coding''||''UBIK.Coding''|-| ''UBIK.WinX.DataService''||''UBIK.DataService''|-| ''UBIK.WinX.Redlining''||''UBIK.Redlining''|-| ''UBIK.WinX.Positioning''||''UBIK.Positioning''|-|}
Take the namespace ''UBIK.Win8'' for example, it is now changed to ''UBIK.WinX''. A few affected XAML namespace references are e.g.* SearchResultListItem''using:UBIK.Win8.Views'' -> ''using:UBIK.WinX.Views''* ''using:UBIK.Win8.GART.Controls'' -> ''using:UBIK.WinX.GART.Controls''
'''Important notes''' on the namespace ''UBIK.WinX.UI'':* SearchResultSelectionOne exception is the namespace '''''UBIK.WinX.UI.CollectionView'''''. It is '''not''' changed since the content is indeed WinX specific.* 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'''''.
== Further information regarding XAML ==* Search[[Developer Mode]] <br>* [[Xamarin XAML]] <br>* [[XAML Basics]] <br>* [[XAML Best practices]]
* TeamLogin** [[AddMemberCommand]]** [[DeleteMemberCommand]]** [[TeamLoginCommandCategory:WinX|XAML]]** [[CloseDialogCommandCategory:XAML|XAML]]
371
edits