The app's default profile is now only generated during app startup when no other profiles are detected.
Added a button in the developer mode to unpack and get all default XAML resources.
Some security related improvements.
The app now informs the web service to terminate the user session upon logout or app closing.
The app no longer allows self signed server certificates.
Moved some properties from GlobalStatusBarViewModel to AppStatusViewModel.
The develop mode now also applies to the open dialog.
Fixed an issue where the app can get into an invalid state if a user manages to browse to e.g. the root object page during a logout process.
Improved the app performance when deleting large amount of data (which happens when e.g. evaluating online queries).
Most features in the old app's top & bottom bars can now be used in customized UI. See XAML Notes - App bars.
Fixed an issue where unnecessary messages are logged. ("Message is null")
UBIK clients are now able to log all webservice communication related activities (in UBIKWebserviceDebug.log) for better trouble shooting. It can also be turned off using the EnableSyncLogging setting in the profiles.
Fixed some misbehaviors in the signature editor. For example, the signing isn't properly disabled after the countdown ends when a stroke is not yet finished.
Known issues
XAML Notes
It is highly recommended to start new UI customizings based on the default resources in UBIK® 4. Here is how you can get them from the app. Some major changes are listed below, please see every item for detailed information and whether your existing customizings will still work.
Obsolete resources
Some of the UI resources from the older versions no longer exist or are not used anymore.
Converters
PropertyItemToValueConverter is removed since it was not used at all. (This should not be used in any XAML customizings, If it is, please consider using alternatives or contact us.)
App bars
These are the top and bottom bars that you bring out by mouse right clicks. The various buttons in them are now included in other parts of the new UI, meaning the bars are now unnecessary and no longer displayed. The custom templates used in these bars include the following.
UBIKChildAction;
UBIKPageAction.
For those who still want to use the old UI with these bars, UICompatibilityLevel should be set to lower than 400 in the profile.
Child templates in UBIKGlobalStatusBar and UBIKGlobalBottomBar
The UBIKGlobalStatusBar and the UBIKGlobalBottomBar are redesigned and no longer use the following child templates.
UBIKTopLeft;
UBIKTopCenter;
UBIKTopRight;
UBIKBottomLeft;
UBIKBottomRight.
This means such existing child templates in your project setups will not have any effect in UBIK® 4, unless you still have the two parent/container templates customized where they are explicitly referenced.
XAML changes
Since there has been a major UI redesign in this version, quite a lot of changes in XAML code (especially bindings) are involved. We have striven to maintain backward compatibility, but some changes either are simply unavoidable or their long term benefits outweigh the efforts required this one time.
UBIKChildPageAction
The Visibility of <AppBarButton x:Name="SaveButton" ... /> now adjusts according to setting "Content -> enable auto save mode". Nothing will be broken if your existing XAMLs are not updated. However, the saving behavior might not match what's described in Content -> AutoSaveMode.
UBIKPropertyArea/UBIKContentArea
The ItemsSource and property count now use the result of an EvalExpression. Mass editing will no longer work or the count will be incorrect if not updated;
Changed from "Properties.Items" to "Properties.VisibleItems" in bindings because Items/AllItems now also include those system/invisible ones that users are not supposed to see.
UBIKPropertyItem/UBIKPriorityPropertyItem
PriorityPropertyClickedCommand/PriorityPropertyRightClickedCommand are deleted since they are the same as PropertyClickedCommand/PropertyRightClickedCommand. You should use the latter instead;
Removed "Content.", "OwnerModel." from bindings.
UBIKGlobalStatusBar
Some properties are moved from GlobalStatusBarViewModel to AppStatusViewModel.
"{Binding ProgressIndicator, ...}" is changed to "{Binding AppStatus.ProgressIndicator, ...}"
"{Binding LoginState, ...}" is changed to "{Binding AppStatus.LoginState, ...}"
"{Binding WritingToDB, ....]" is changed to "{Binding AppStatus.WritingToDB, ...}"
"{Binding TaskCount, ....]" is changed to "{Binding AppStatus.TaskCount, ...}"
UBIKPropertyValueRecordDialog
Changed from "PropertyItem" to "PropertyViewModel" in bindings.
Editor related templates
The changes are quite extensive and, therefore, we recommended you taking the default templates from the app and re-customize them from there.
First of all for UBIKEditDateTime, UBIKEditDouble, UBIKEditInt, UBIKEditGuid, UBIKEditChart, UBIKEditGeo, UBIKEditBool, UBIKEditString.
Changed from "EditDialogViewModel.PropertyItem" to "PropertyViewModel" in bindings;
Changed from "EditDialogViewModel" to "PropertyViewModel" in bindings;
Changed from "EditDialogViewModel.DeletePressedCommand" to "PropertyViewModel.DeleteValueCommand" in a binding; (UBIKEditGuid)
Prefixed "EditDialogViewModel" with "PropertyViewModel." in the binding of <Button x:Name="TeachInButton" />; (UBIKEditGeo)
UBIKEditString was renamed from UBIKEdit.
Then for UBIKEditDialogButtons, UBIKEditDialogHeader, UBIKEditDialogNACheck.
Changed from "PropertyItem.Content.DisplayStrings" to "PropertyViewModel.OwnerObject.DisplayStrings" in bindings; (UBIKEditDialogHeader)
Changed from "PropertyItem" to "PropertyViewModel" in bindings;