Showing posts with label windows 10. Show all posts
Showing posts with label windows 10. Show all posts

Thursday, January 07, 2021

Fallback Fonts in XAML

I have to admit that I feel foolish for not knowing about this before. Let me tell you about the power of fallback fonts in XAML so you can avoid the ignorance I lived in for so long. I'm doing this in UWP code but the same applies to WPF.

Let's say you want the following displayed (with XAML) as simply as possible.

I [filled heart] You [smiley face] [red lips] [music notes]

The "I" and the "You" are rendered with the "Segoe Script" font.

The "filled heart", "smiley face", and "music notes" are from the "Segoe MDL2 Assets" font.

The "red lips" are the "kiss mark" emoji.


Off the top of your head, how do you render this?

You might put multiple TextBlocks next to each other (probably in a Horizontally-oriented StackPanel) and assign different FontFamily values to each one.

Or, you might use multiple Runs within a single TextBlock and assign different FontFamily values to each one.


But, let me tell you there's a way to do this with a single TextBlock and no runs!

The XAML looks like this:

<TextBlock>I &#xEB52; You &#xED54; 💋 &#xE189;</TextBlock>

To get the script font I set the FontFamily to "Segoe Script" and I get this:

I [unrendered character] You [unrendered character] [red lips] [unrendered character]
Note that the red lips / kiss mark are rendered as a glyph even though they are not in the "Segoe Script" font. This is due to a built-in feature of XAML text rendering. The underlying text rendering system is doing a lot of work to try and avoid try and display all the characters. When the specified character isn't in the defined font it tries to use a value from the `ContentControlThemeFontFamily` resource. This is a list of fonts that it looks in for something to display the appropriate glyph. By default, this includes "Segoe UI" and "Segoe UI Emoji". It's the second of these that means that emojis are rendered in most places without any extra effort needed.

So, we're part of the way there by specifying a single FontFamily.

FontFamily="Segoe Script"

But what about the glyphs from the "Segoe MDL2 Assets" font?
Well, just as in CSS it's possible to specify multiple fonts/typefaces to use as a fallback, the same is possible with XAML.
Why I never thought of this before I don't know.

FontFamily="Segoe Script,Segoe MDL2 Assets"

In my head, I always thought of the HTML/CSS specification of multiple fonts as applying all or nothing to the text. If the first specified font is available use that for all the text, if it's not available use the next font, etc.

I don't know if HTML/CSS rendering is cleverer than that (please comment below, if you know) but the XAML text renderer is smarter than just using the same font for everything. It uses the specified list (family) of fonts on a character by character basis.

If it can't render a character in the first defined font, it will look to the next in the family and if none provide the character it will look to the ContentControlThemeFontFamily resource. Only if none of these fonts have a glyph for the character do you get the placeholder for a missing glyph.

This is a simplified explanation as the real solution considered different languages too. Don't ever think displaying text is simple. ;)



I discovered all this after going down a rabbit hole investigating how to avoid characters not displaying. I started by looking at intercepting what is displayed on the screen and then checking all the characters there are in the font family specified. (I didn't even consider multiple font-family values.) That lead me to investigate how to detect binding changes which led me down a side path looking at how the `x:bind` markup extension creates and reflects binding changes.

I wanted to know when any text in an app isn't rendered correctly so that the app could be updated to support the fonts/glyphs it needed so users can always see the characters they expect.

Now knowing about fallback fonts, I think a simpler solution is to make sure I include multiple fonts in the default FontFamily used within apps.



Tuesday, September 22, 2020

What's in the Universal device family API contracts

This post exists to list information no longer documented by Microsoft.

---


This page contains a list of all of the API contracts that are part of the Universal device family. These API contracts are implemented by all Windows 10 operating system editions. By default, Microsoft Visual Studio specifies **Windows.Universal** as the target device family in the app package manifest file for UWP apps. To read more about device families, check out the Device families overview page.


Version 10.0.18362.0

Windows.AI.MachineLearning.MachineLearningContract, version=2.0

Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract, version=2.0

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version=2.0

Windows.ApplicationModel.Calls.CallsPhoneContract, version=5.0

Windows.ApplicationModel.Calls.CallsVoipContract, version=4.0

Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, version=2.0

Windows.ApplicationModel.SocialInfo.SocialInfoContract, version=2.0

Windows.ApplicationModel.StartupTaskContract, version=3.0

Windows.Devices.Custom.CustomDeviceContract, version=1.0

Windows.Devices.DevicesLowLevelContract, version=3.0

Windows.Devices.Printers.PrintersContract, version=1.0

Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract, version=3.0

Windows.Devices.SmartCards.SmartCardEmulatorContract, version=6.0

Windows.Foundation.FoundationContract, version=3.0

Windows.Foundation.UniversalApiContract, version=8.0

Windows.Gaming.XboxLive.StorageApiContract, version=1.0

Windows.Graphics.Printing3D.Printing3DContract, version=4.0

Windows.Networking.Connectivity.WwanContract, version=2.0

Windows.Networking.Sockets.ControlChannelTriggerContract, version=3.0

Windows.Services.Maps.GuidanceContract, version=3.0

Windows.Services.Maps.LocalSearchContract, version=4.0

Windows.Services.Store.StoreContract, version=4.0

Windows.Services.TargetedContent.TargetedContentContract, version=1.0

Windows.System.Profile.ProfileHardwareTokenContract, version=1.0

Windows.System.Profile.ProfileSharedModeContract, version=2.0

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version=3.0

Windows.System.SystemManagementContract, version=6.0

Windows.UI.ViewManagement.ViewManagementViewScalingContract, version=1.0

Windows.UI.Xaml.Core.Direct.XamlDirectContract, version=2.0


Version 10.0.17763.0

Windows.AI.MachineLearning.MachineLearningContract, version=1.0

Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract, version=2.0

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version=1.0

Windows.ApplicationModel.Calls.CallsPhoneContract, version=4.0

Windows.ApplicationModel.Calls.CallsVoipContract, version=4.0

Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract, version=2.0

Windows.ApplicationModel.SocialInfo.SocialInfoContract, version=2.0

Windows.ApplicationModel.StartupTaskContract, version=3.0

Windows.Devices.Custom.CustomDeviceContract, version=1.0

Windows.Devices.DevicesLowLevelContract, version=3.0

Windows.Devices.Printers.PrintersContract, version=1.0

Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract, version=3.0

Windows.Devices.SmartCards.SmartCardEmulatorContract, version=6.0

Windows.Foundation.FoundationContract, version=3.0

Windows.Foundation.UniversalApiContract, version=7.0

Windows.Gaming.XboxLive.StorageApiContract, version=1.0

Windows.Graphics.Printing3D.Printing3DContract, version=4.0

Windows.Networking.Connectivity.WwanContract, version=2.0

Windows.Networking.Sockets.ControlChannelTriggerContract, version=3.0

Windows.Services.Maps.GuidanceContract, version=3.0

Windows.Services.Maps.LocalSearchContract, version=4.0

Windows.Services.Store.StoreContract, version=4.0

Windows.Services.TargetedContent.TargetedContentContract, version=1.0

Windows.System.Profile.ProfileHardwareTokenContract, version=1.0

Windows.System.Profile.ProfileSharedModeContract, version=2.0

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version=3.0

Windows.System.SystemManagementContract, version=6.0

Windows.UI.ViewManagement.ViewManagementViewScalingContract, version=1.0

Windows.UI.Xaml.Core.Direct.XamlDirectContract, version=1.0


Version 10.0.17134.1

Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract, version=1.0

Windows.ApplicationModel.Calls.CallsVoipContract, version=3.0

Windows.ApplicationModel.SocialInfo.SocialInfoContract, version=2.0

Windows.ApplicationModel.StartupTaskContract, version=3.0

Windows.Devices.Custom.CustomDeviceContract, version=1.0

Windows.Devices.DevicesLowLevelContract, version=3.0

Windows.Devices.Printers.PrintersContract, version=1.0

Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract, version=3.0

Windows.Devices.SmartCards.SmartCardEmulatorContract, version=5.0

Windows.Foundation.FoundationContract, version=3.0

Windows.Foundation.UniversalApiContract, version=6.0

Windows.Gaming.XboxLive.StorageApiContract, version=1.0

Windows.Graphics.Printing3D.Printing3DContract, version=4.0

Windows.Networking.Connectivity.WwanContract, version=2.0

Windows.Services.Store.StoreContract, version=3.0

Windows.Services.TargetedContent.TargetedContentContract, version=1.0

Windows.System.Profile.ProfileHardwareTokenContract, version=1.0

Windows.System.Profile.ProfileSharedModeContract, version=2.0

Windows.UI.ViewManagement.ViewManagementViewScalingContract, version=1.0


Version 10.0.16299.0

Windows.ApplicationModel.Calls.CallsVoipContract, version=2.0

Windows.ApplicationModel.SocialInfo.SocialInfoContract, version=2.0

Windows.ApplicationModel.StartupTaskContract, version=2.0

Windows.Devices.Custom.CustomDeviceContract, version=1.0

Windows.Devices.DevicesLowLevelContract, version=3.0

Windows.Devices.Printers.PrintersContract, version=1.0

Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract, version=3.0

Windows.Devices.SmartCards.SmartCardEmulatorContract, version=5.0

Windows.Foundation.FoundationContract, version=3.0

Windows.Foundation.UniversalApiContract, version=5.0

Windows.Gaming.XboxLive.StorageApiContract, version=1.0

Windows.Graphics.Printing3D.Printing3DContract, version=4.0

Windows.Networking.Connectivity.WwanContract, version=1.0

Windows.Services.Store.StoreContract, version=2.0

Windows.Services.TargetedContent.TargetedContentContract, version=1.0

Windows.System.Profile.ProfileHardwareTokenContract, version=1.0

Windows.System.Profile.ProfileSharedModeContract, version=2.0

Windows.UI.ViewManagement.ViewManagementViewScalingContract, version=1.0


Version 10.0.15063.0

Windows.ApplicationModel.Calls.CallsVoipContract, version=1.0

Windows.ApplicationModel.SocialInfo.SocialInfoContract, version=2.0

Windows.Devices.DevicesLowLevelContract, version=3.0

Windows.Devices.Printers.PrintersContract, version=1.0

Windows.Foundation.FoundationContract, version=3.0

Windows.Foundation.UniversalApiContract, version=4.0

Windows.Graphics.Printing3D.Printing3DContract, version=3.0

Windows.Networking.Connectivity.WwanContract, version=1.0

Windows.Services.Store.StoreContract, version=2.0

Windows.Services.TargetedContent.TargetedContentContract, version=1.0

Windows.System.Profile.ProfileHardwareTokenContract, version=1.0

Windows.System.Profile.ProfileSharedModeContract, version=2.0

Windows.UI.ViewManagement.ViewManagementViewScalingContract, version=1.0


Version 10.0.14393.0

Windows.ApplicationModel.Calls.CallsVoipContract, version 1.0

Windows.ApplicationModel.SocialInfo.SocialInfoContract, version 1.0

Windows.Devices.DevicesLowLevelContract, version 2.0

Windows.Devices.Printers.PrintersContract, version 1.0

Windows.Foundation.FoundationContract, version 2.0

Windows.Foundation.UniversalApiContract, version 3.0

Windows.Graphics.Printing3D.Printing3DContract, version 3.0

Windows.Networking.Connectivity.WwanContract, version 1.0

Windows.Services.Store.StoreContract, version 1.0

Windows.System.Profile.ProfileHardwareTokenContract, version 1.0

Windows.System.Profile.ProfileSharedModeContract, version 1.0

Windows.UI.ViewManagement.ViewManagementViewScalingContract, version 1.0


Version 10.0.10586.0

Windows.ApplicationModel.Calls.CallsVoipContract, version 1.0

Windows.Devices.Printers.PrintersContract, version 1.0

Windows.Foundation.FoundationContract, version 1.0

Windows.Foundation.UniversalApiContract, version 2.0

Windows.Graphics.Printing3D.Printing3DContract, version 2.0

Windows.Networking.Connectivity.WwanContract, version 1.0


Version 10.0.10240.0

Windows.Foundation.FoundationContract, version 1.0

Windows.Foundation.UniversalApiContract, version 1.0

Windows.Networking.Connectivity.WwanContract, version 1.0

What's in the Xbox Live Extension SDK API contracts for UWP

 This post exists to list information no longer documented by Microsoft.

---


Extension SDKs let you call specialized APIs for specific devices. To read more about this, see the Device families overview.

This page contains a list of all of the API contracts in the Xbox Live extension SDK for the Universal Windows Platform (UWP).


Version 10.0.17763.0

In the October 2018 Update (version 10.0.17763), all XboxLive extension contracts were either deprecated or moved into the Windows Universal SDK.

Version 10.0.15063.0

Windows.Gaming.XboxLive.StorageApiContract, version=1.0. 
Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version=1.0 

Version 10.0.14393.0

Windows.Gaming.XboxLive.StorageApiContract, version 1.0 
Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version 1.0 

Version 10.0.10586.0

Windows.Gaming.XboxLive.StorageApiContract, version 1.0 
Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version 1.0 

Version 10.0.10240.0

Windows.Gaming.XboxLive.StorageApiContract, version 1.0 
Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version 1.0  

What's in the Windows Team Extension SDK API contracts for UWP

This post exists to list information no longer documented by Microsoft.

---


Extension SDKs let you call specialized APIs for specific devices. To read more about this, see the Device families overview.

This page contains a list of all of the API contracts in the Windows Team Extension SDK extension SDK for the Universal Windows Platform (UWP)


Version 10.0.17763.0

In the October 2018 Update (version 10.0.17763.0) all Team Extension contracts were moved into the Windows Universal SDK.


Version 10.0.17134.1

Windows.Services.Maps.GuidanceContract, version=3.0

Windows.Services.Maps.LocalSearchContract, version=4.0


Version 10.0.16299.0

Windows.Services.Maps.GuidanceContract, version=3.0

Windows.Services.Maps.LocalSearchContract, version=4.0


Version 10.0.15063.0

Windows.Services.Maps.GuidanceContract, version=2.0

Windows.Services.Maps.LocalSearchContract, version=3.0


Version 10.0.14393.0

Windows.Services.Maps.GuidanceContract, version=2.0

Windows.Services.Maps.LocalSearchContract, version=3.0


Version 10.0.10586.0

Windows.System.Profile.ProfileSharedModeContract, version=1.0


Version 10.0.10240.0

Windows.System.Profile.ProfileSharedModeContract, version=1.0

What's in the Windows IoT Extension SDK API contracts for UWP

This post exists to list information no longer documented by Microsoft.

---


Extension SDKs let you call specialized APIs for specific devices. To read more about this, see the Device families overview.

This page contains a list of the API contracts in the Windows Internet of Things (IoT) Extension SDK for the Universal Windows Platform (UWP).


 [!IMPORTANT]

Applications that target version 10.0.17763.0 should delete references to the IoT Extension SDK to avoid build breaks.


Version 10.0.17763.0

In the October 2018 Update (version 10.0.17763.0) all IoT contracts were moved into the Windows Universal SDK.


Version 10.0.17134.1

Windows.System.SystemManagementContract, version=5.0


Version 10.0.16299.0

Windows.System.SystemManagementContract, version=4.0


Version 10.0.15063.0

Windows.System.SystemManagementContract, version=3.0


Version 10.0.14393.0

Windows.System.SystemManagementContract, version 2.0


Version 10.0.10586.0

Windows.Devices.DevicesLowLevelContract, version 2.0 

Windows.System.SystemManagementContract, version 2.0


Version 10.0.10240.0

Windows.Devices.DevicesLowLevelContract, version 1.0

Windows.System.SystemManagementContract, version 1.0

What's in the Windows Desktop Extension SDK API contracts for UWP

 This post exists to list information no longer documented by Microsoft.

---


Extension SDKs let you call specialized APIs for specific devices. To read more about this, see the Device families overview.

This page contains a list of all the API contracts in the Windows desktop extension SDK for the Universal Windows Platform (UWP).


Version 10.0.18362.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version=1.0

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version=1.0

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version=1.0

Windows.ApplicationModel.Calls.LockScreenCallContract, version=1.0

Windows.ApplicationModel.FullTrustAppContract, version=1.0

Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract, version=1.0

Windows.ApplicationModel.Preview.Notes.PreviewNotesContract, version=2.0

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version=2.0

Windows.ApplicationModel.Search.Core.SearchCoreContract, version=1.0

Windows.ApplicationModel.Search.SearchContract, version=1.0

Windows.ApplicationModel.Wallet.WalletContract, version=1.0

Windows.Devices.Portable.PortableDeviceContract, version=1.0

Windows.Devices.Printers.Extensions.ExtensionsContract, version=2.0

Windows.Devices.Scanners.ScannerDeviceContract, version=1.0

Windows.Devices.Sms.LegacySmsApiContract, version=1.0

Windows.Gaming.Input.GamingInputPreviewContract, version=1.0

Windows.Gaming.Preview.GamesEnumerationContract, version=2.0

Windows.Gaming.UI.GameChatOverlayContract, version=1.0

Windows.Gaming.UI.GamingUIProviderContract, version=1.0

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version=1.0

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version=1.0

Windows.Management.Workplace.WorkplaceSettingsContract, version=1.0

Windows.Media.AppBroadcasting.AppBroadcastingContract, version=1.0

Windows.Media.AppRecording.AppRecordingContract, version=1.0

Windows.Media.Capture.AppBroadcastContract, version=2.0

Windows.Media.Capture.AppCaptureContract, version=4.0

Windows.Media.Capture.AppCaptureMetadataContract, version=1.0

Windows.Media.Capture.CameraCaptureUIContract, version=1.0

Windows.Media.Capture.GameBarContract, version=1.0

Windows.Media.Devices.CallControlContract, version=1.0

Windows.Media.MediaControlContract, version=1.0

Windows.Media.Playlists.PlaylistsContract, version=1.0

Windows.Media.Protection.ProtectionRenewalContract, version=1.0

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version=1.0

Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version=1.0

Windows.Perception.Automation.Core.PerceptionAutomationCoreContract, version=1.0

Windows.Security.EnterpriseData.EnterpriseDataContract, version=5.0

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version=1.0

Windows.Storage.Provider.CloudFilesContract, version=3.0

Windows.System.Profile.ProfileRetailInfoContract, version=1.0

Windows.System.UserProfile.UserProfileContract, version=2.0

Windows.System.UserProfile.UserProfileLockScreenContract, version=1.0

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version=1.0

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version=1.0

Windows.UI.Core.CoreWindowDialogsContract, version=1.0

Windows.UI.Shell.SecurityAppManagerContract, version=1.0

Windows.UI.Xaml.Hosting.HostingContract, version=4.0

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version=2.0


Version 10.0.17763.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version=1.0

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version=1.0

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version=1.0

Windows.ApplicationModel.Calls.LockScreenCallContract, version=1.0

Windows.ApplicationModel.FullTrustAppContract, version=1.0

Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract, version=1.0

Windows.ApplicationModel.Preview.Notes.PreviewNotesContract, version=2.0.

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version=2.0

Windows.ApplicationModel.Search.Core.SearchCoreContract, version=1.0

Windows.ApplicationModel.Search.SearchContract, version=1.0

Windows.ApplicationModel.Wallet.WalletContract, version=1.0

Windows.Devices.Portable.PortableDeviceContract, version=1.0

Windows.Devices.Printers.Extensions.ExtensionsContract, version=2.0

Windows.Devices.Scanners.ScannerDeviceContract, version=1.0

Windows.Devices.Sms.LegacySmsApiContract, version=1.0

Windows.Gaming.Input.GamingInputPreviewContract, version=1.0

Windows.Gaming.Preview.GamesEnumerationContract, version=2.0

Windows.Gaming.UI.GameChatOverlayContract, version=1.0

Windows.Gaming.UI.GamingUIProviderContract, version=1.0

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version=1.0

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version=1.0

Windows.Management.Workplace.WorkplaceSettingsContract, version=1.0

Windows.Media.AppBroadcasting.AppBroadcastingContract, version=1.0

Windows.Media.AppRecording.AppRecordingContract, version=1.0

Windows.Media.Capture.AppBroadcastContract, version=2.0

Windows.Media.Capture.AppCaptureContract, version=4.0

Windows.Media.Capture.AppCaptureMetadataContract, version=1.0

Windows.Media.Capture.CameraCaptureUIContract, version=1.0

Windows.Media.Capture.GameBarContract, version=1.0

Windows.Media.Devices.CallControlContract, version=1.0

Windows.Media.MediaControlContract, version=1.0

Windows.Media.Playlists.PlaylistsContract, version=1.0

Windows.Media.Protection.ProtectionRenewalContract, version=1.0

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version=1.0

Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version=1.0

Windows.Perception.Automation.Core.PerceptionAutomationCoreContract, version=1.0

Windows.Security.EnterpriseData.EnterpriseDataContract, version=5.0

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version=1.0

Windows.Storage.Provider.CloudFilesContract, version=3.0

Windows.System.Profile.ProfileRetailInfoContract, version=1.0

Windows.System.UserProfile.UserProfileContract, version=2.0

Windows.System.UserProfile.UserProfileLockScreenContract, version=1.0

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version=1.0

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version=1.0

Windows.UI.Core.CoreWindowDialogsContract, version=1.0

Windows.UI.Shell.SecurityAppManagerContract, version=1.0

Windows.UI.Xaml.Hosting.HostingContract, version=3.0

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version=2.0


Version 10.0.17134.1

Windows.ApplicationModel.Activation.ActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version=1.0

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version=1.0

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version=1.0

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version=1.0

Windows.ApplicationModel.Calls.LockScreenCallContract, version=1.0

Windows.ApplicationModel.FullTrustAppContract, version=1.0

Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract, version=1.0

Windows.ApplicationModel.Preview.Notes.PreviewNotesContract, version=2.0

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version=1.0

Windows.ApplicationModel.Search.Core.SearchCoreContract, version=1.0

Windows.ApplicationModel.Search.SearchContract, version=1.0

Windows.ApplicationModel.Wallet.WalletContract, version=1.0

Windows.Devices.Portable.PortableDeviceContract, version=1.0

Windows.Devices.Printers.Extensions.ExtensionsContract, version=2.0

Windows.Devices.Scanners.ScannerDeviceContract, version=1.0

Windows.Devices.Sms.LegacySmsApiContract, version=1.0

Windows.Gaming.Input.GamingInputPreviewContract, version=1.0

Windows.Gaming.Preview.GamesEnumerationContract, version=2.0

Windows.Gaming.UI.GameChatOverlayContract, version=1.0

Windows.Gaming.UI.GamingUIProviderContract, version=1.0

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version=1.0

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version=1.0

Windows.Management.Workplace.WorkplaceSettingsContract, version=1.0

Windows.Media.AppBroadcasting.AppBroadcastingContract, version=1.0

Windows.Media.AppRecording.AppRecordingContract, version=1.0

Windows.Media.Capture.AppBroadcastContract, version=2.0

Windows.Media.Capture.AppCaptureContract, version=4.0

Windows.Media.Capture.AppCaptureMetadataContract, version=1.0

Windows.Media.Capture.CameraCaptureUIContract, version=1.0

Windows.Media.Capture.GameBarContract, version=1.0

Windows.Media.Devices.CallControlContract, version=1.0

Windows.Media.MediaControlContract, version=1.0

Windows.Media.Playlists.PlaylistsContract, version=1.0

Windows.Media.Protection.ProtectionRenewalContract, version=1.0

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version=1.0

Windows.Networking.Sockets.ControlChannelTriggerContract, version=3.0

Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version=1.0

Windows.Perception.Automation.Core.PerceptionAutomationCoreContract, version=1.0

Windows.Security.EnterpriseData.EnterpriseDataContract, version=5.0.0.0

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version=1.0

Windows.Services.Maps.GuidanceContract, version=3.0

Windows.Services.Maps.LocalSearchContract, version=4.0

Windows.Storage.Provider.CloudFilesContract, version=2.0

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version=2.0

Windows.System.Profile.ProfileRetailInfoContract, version=1.0

Windows.System.UserProfile.UserProfileContract, version=1.0

Windows.System.UserProfile.UserProfileLockScreenContract, version=1.0

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version=1.0

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version=1.0

Windows.UI.Core.CoreWindowDialogsContract, version=1.0

Windows.UI.Xaml.Hosting.HostingContract, version=2.0

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version=2.0


Version 10.0.16299.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version=1.0

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version=1.0

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version=1.0

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version=1.0

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version=1.0

Windows.ApplicationModel.Calls.LockScreenCallContract, version=1.0

Windows.ApplicationModel.FullTrustAppContract, version=1.0

Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract, version=1.0

Windows.ApplicationModel.Preview.Notes.PreviewNotesContract, version=2.0

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version=1.0

Windows.ApplicationModel.Search.Core.SearchCoreContract, version=1.0

Windows.ApplicationModel.Search.SearchContract, version=1.0

Windows.ApplicationModel.Wallet.WalletContract, version=1.0

Windows.Devices.Portable.PortableDeviceContract, version=1.0

Windows.Devices.Printers.Extensions.ExtensionsContract, version=2.0

Windows.Devices.Scanners.ScannerDeviceContract, version=1.0

Windows.Devices.Sms.LegacySmsApiContract, version=1.0

Windows.Gaming.Input.GamingInputPreviewContract, version=1.0

Windows.Gaming.Preview.GamesEnumerationContract, version=2.0

Windows.Gaming.UI.GameChatOverlayContract, version=1.0

Windows.Gaming.UI.GamingUIProviderContract, version=1.0

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version=1.0

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version=1.0

Windows.Management.Workplace.WorkplaceSettingsContract, version=1.0

Windows.Media.AppBroadcasting.AppBroadcastingContract, version=1.0

Windows.Media.AppRecording.AppRecordingContract, version=1.0

Windows.Media.Capture.AppBroadcastContract, version=2.0

Windows.Media.Capture.AppCaptureContract, version=4.0

Windows.Media.Capture.AppCaptureMetadataContract, version=1.0

Windows.Media.Capture.CameraCaptureUIContract, version=1.0

Windows.Media.Capture.GameBarContract, version=1.0

Windows.Media.Devices.CallControlContract, version=1.0

Windows.Media.MediaControlContract, version=1.0

Windows.Media.Playlists.PlaylistsContract, version=1.0

Windows.Media.Protection.ProtectionRenewalContract, version=1.0

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version=1.0

Windows.Networking.Sockets.ControlChannelTriggerContract, version=2.0

Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, version=1.0

Windows.Perception.Automation.Core.PerceptionAutomationCoreContract, version=1.0

Windows.Security.EnterpriseData.EnterpriseDataContract, version=5.0

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version=1.0

Windows.Services.Maps.GuidanceContract, version=3.0

Windows.Services.Maps.LocalSearchContract, version=4.0

Windows.Storage.Provider.CloudFilesContract, version=1.0

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version=2.0

Windows.System.Profile.ProfileRetailInfoContract, version=1.0

Windows.System.UserProfile.UserProfileContract, version=1.0

Windows.System.UserProfile.UserProfileLockScreenContract, version=1.0

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version=1.0

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version=1.0

Windows.UI.Core.CoreWindowDialogsContract, version=1.0

Windows.UI.Xaml.Hosting.HostingContract, version=2.0

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version=2.0


Version 10.0.15063.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version=1.0 

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version=1.0 

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version=1.0 

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version=1.0 

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version=1.0 

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version=1.0 

Windows.ApplicationModel.Calls.LockScreenCallContract, version=1.0 

Windows.ApplicationModel.FullTrustAppContract, version=1.0 

Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract, version=1.0 

Windows.ApplicationModel.Preview.Notes.PreviewNotesContract, version=2.0 

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version=1.0 

Windows.ApplicationModel.Search.Core.SearchCoreContract, version=1.0 

Windows.ApplicationModel.Search.SearchContract, version=1.0 

Windows.ApplicationModel.StartupTaskContract, version=1.0 

Windows.ApplicationModel.Wallet.WalletContract, version=1.0 

Windows.Devices.Custom.CustomDeviceContract, version=1.0 

Windows.Devices.Portable.PortableDeviceContract, version=1.0 

Windows.Devices.Printers.Extensions.ExtensionsContract, version=2.0 

Windows.Devices.Scanners.ScannerDeviceContract, version=1.0 

Windows.Devices.Sms.LegacySmsApiContract, version=1.0 

Windows.Gaming.Input.GamingInputPreviewContract, version=1.0 

Windows.Gaming.Preview.GamesEnumerationContract, version=1.0 

Windows.Gaming.UI.GameChatOverlayContract, version=1.0 

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version=1.0 

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version=1.0 

Windows.Management.Workplace.WorkplaceSettingsContract, version=1.0 

Windows.Media.Capture.AppBroadcastContract, version=1.0 

Windows.Media.Capture.AppCaptureContract, version=4.0 

Windows.Media.Capture.CameraCaptureUIContract, version=1.0 

Windows.Media.Capture.GameBarContract, version=1.0 

Windows.Media.Devices.CallControlContract, version=1.0 

Windows.Media.MediaControlContract, version=1.0 

Windows.Media.Playlists.PlaylistsContract, version=1.0 

Windows.Media.Protection.ProtectionRenewalContract, version=1.0 

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version=1.0 

Windows.Networking.Sockets.ControlChannelTriggerContract, version=2.0 

Windows.Perception.Automation.Core.PerceptionAutomationCoreContract, version=1.0 

Windows.Security.EnterpriseData.EnterpriseDataContract, version=4.0 

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version=1.0 

Windows.Services.Maps.GuidanceContract, version=2.0 

Windows.Services.Maps.LocalSearchContract, version=3.0 

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version=1.0 

Windows.System.Profile.ProfileRetailInfoContract, version=1.0 

Windows.System.UserProfile.UserProfileContract, version=1.0 

Windows.System.UserProfile.UserProfileLockScreenContract, version=1.0 

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version=1.0 

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version=1.0 

Windows.UI.Core.CoreWindowDialogsContract, version=1.0 

Windows.UI.Xaml.Hosting.HostingContract, version=1.0 

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version=2.0 


Version 10.0.14393.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version 1.0 

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version 1.0 

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version 1.0 

Windows.ApplicationModel.Calls.LockScreenCallContract, version 1.0 

Windows.ApplicationModel.FullTrustAppContract, version 1.0 

Windows.ApplicationModel.Preview.Notes.PreviewNotesContract, version 1.0 

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version 1.0 

Windows.ApplicationModel.Search.Core.SearchCoreContract, version 1.0 

Windows.ApplicationModel.Search.SearchContract, version 1.0 

Windows.ApplicationModel.StartupTaskContract, version 1.0 

Windows.ApplicationModel.Wallet.WalletContract, version 1.0 

Windows.Devices.Custom.CustomDeviceContract, version 1.0 

Windows.Devices.Portable.PortableDeviceContract, version 1.0 

Windows.Devices.Printers.Extensions.ExtensionsContract, version 2.0 

Windows.Devices.Scanners.ScannerDeviceContract, version 1.0 

Windows.Devices.Sms.LegacySmsApiContract, version 1.0 

Windows.Gaming.Preview.GamesEnumerationContract, version 1.0 

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version 1.0 

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version 1.0 

Windows.Management.Orchestration.OrchestrationContract, version 1.0 

Windows.Management.Workplace.WorkplaceSettingsContract, version 1.0 

Windows.Media.Capture.AppCaptureContract, version 3.0 

Windows.Media.Capture.CameraCaptureUIContract, version 1.0 

Windows.Media.Devices.CallControlContract, version 1.0 

Windows.Media.MediaControlContract, version 1.0 

Windows.Media.Playlists.PlaylistsContract, version 1.0 

Windows.Media.Protection.ProtectionRenewalContract, version 1.0 

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version 1.0 

Windows.Networking.Sockets.ControlChannelTriggerContract, version 2.0 

Windows.Perception.Automation.Core.PerceptionAutomationCoreContract, version 1.0 

Windows.Security.EnterpriseData.EnterpriseDataContract, version 3.0 

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version 1.0 

Windows.Services.Maps.GuidanceContract, version 2.0 

Windows.Services.Maps.LocalSearchContract, version 3.0 

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version 1.0 

Windows.System.Profile.ProfileRetailInfoContract, version 1.0 

Windows.System.UserProfile.UserProfileContract, version 1.0 

Windows.System.UserProfile.UserProfileLockScreenContract, version 1.0 

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version 1.0 

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version 1.0 

Windows.UI.Core.CoreWindowDialogsContract, version 1.0 

Windows.UI.Xaml.Hosting.HostingContract, version 1.0 

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version 2.0 


Version 10.0.10586.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version 1.0 

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version 1.0 

Windows.ApplicationModel.Calls.Background.CallsBackgroundContract, version 1.0 

Windows.ApplicationModel.Calls.LockScreenCallContract, version 1.0 

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version 1.0 

Windows.ApplicationModel.Search.Core.SearchCoreContract, version 1.0 

Windows.ApplicationModel.Search.SearchContract, version 1.0 

Windows.ApplicationModel.Wallet.WalletContract, version 1.0 

Windows.Devices.Custom.CustomDeviceContract, version 1.0 

Windows.Devices.Portable.PortableDeviceContract, version 1.0 

Windows.Devices.Printers.Extensions.ExtensionsContract, version 2.0 

Windows.Devices.Scanners.ScannerDeviceContract, version 1.0 

Windows.Devices.Sms.LegacySmsApiContract, version 1.0 

Windows.Gaming.Preview.GamesEnumerationContract, version 1.0 

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version 1.0 

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version 1.0 

Windows.Management.Orchestration.OrchestrationContract, version 1.0 

Windows.Management.Workplace.WorkplaceSettingsContract, version 1.0 

Windows.Media.Capture.AppCaptureContract, version 2.0 

Windows.Media.Capture.CameraCaptureUIContract, version 1.0 

Windows.Media.Devices.CallControlContract, version 1.0 

Windows.Media.MediaControlContract, version 1.0 

Windows.Media.Playlists.PlaylistsContract, version 1.0 

Windows.Media.Protection.ProtectionRenewalContract, version 1.0 

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version 1.0 

Windows.Networking.Sockets.ControlChannelTriggerContract, version 1.0 

Windows.Security.EnterpriseData.EnterpriseDataContract, version 2.0 

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version 1.0 

Windows.Services.Maps.GuidanceContract, version 2.0 

Windows.Services.Maps.LocalSearchContract, version 2.0 

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version 1.0 

Windows.System.Profile.ProfileHardwareTokenContract, version 1.0 

Windows.System.Profile.ProfileRetailInfoContract, version 1.0 

Windows.System.UserProfile.UserProfileContract, version 1.0 

Windows.System.UserProfile.UserProfileLockScreenContract, version 1.0 

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version 1.0 

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version 1.0 

Windows.UI.Core.CoreWindowDialogsContract, version 1.0 

Windows.UI.Xaml.Hosting.HostingContract, version 1.0 

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version 1.0 


Version 10.0.10240.0

Windows.ApplicationModel.Activation.ActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Activation.ActivationCameraSettingsContract, version 1.0 

Windows.ApplicationModel.Activation.ContactActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract, version 1.0 

Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract, version 1.0 

Windows.ApplicationModel.Calls.LockScreenCallContract, version 1.0 

Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, version 1.0 

Windows.ApplicationModel.Search.Core.SearchCoreContract, version 1.0 

Windows.ApplicationModel.Search.SearchContract, version 1.0 

Windows.ApplicationModel.Wallet.WalletContract, version 1.0 

Windows.Devices.Custom.CustomDeviceContract, version 1.0 

Windows.Devices.Portable.PortableDeviceContract, version 1.0 

Windows.Devices.Printers.Extensions.ExtensionsContract, version 1.0 

Windows.Devices.Printers.PrintersContract, version 1.0 

Windows.Devices.Scanners.ScannerDeviceContract, version 1.0 

Windows.Devices.Sms.LegacySmsApiContract, version 1.0 

Windows.Gaming.Preview.GamesEnumerationContract, version 1.0 

Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract, version 1.0 

Windows.Graphics.Printing3D.Printing3DContract, version 1.0 

Windows.Management.Deployment.Preview.DeploymentPreviewContract, version 1.0 

Windows.Management.Workplace.WorkplaceSettingsContract, version 1.0 

Windows.Media.Capture.AppCaptureContract, version 1.0 

Windows.Media.Capture.CameraCaptureUIContract, version 1.0 

Windows.Media.Devices.CallControlContract, version 1.0 

Windows.Media.MediaControlContract, version 1.0 

Windows.Media.Playlists.PlaylistsContract, version 1.0 

Windows.Media.Protection.ProtectionRenewalContract, version 1.0 

Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract, version 1.0 

Windows.Networking.Sockets.ControlChannelTriggerContract, version 1.0 

Windows.Security.EnterpriseData.EnterpriseDataContract, version 1.0 

Windows.Security.ExchangeActiveSyncProvisioning.EasContract, version 1.0 

Windows.Services.Maps.GuidanceContract, version 1.0 

Windows.Services.Maps.LocalSearchContract, version 1.0 

Windows.System.Profile.SystemManufacturers.SystemManufacturersContract, version 1.0 

Windows.System.Profile.ProfileHardwareTokenContract, version 1.0 

Windows.System.Profile.ProfileRetailInfoContract, version 1.0 

Windows.System.UserProfile.UserProfileContract, version 1.0 

Windows.System.UserProfile.UserProfileLockScreenContract, version 1.0 

Windows.UI.ApplicationSettings.ApplicationsSettingsContract, version 1.0 

Windows.UI.Core.AnimationMetrics.AnimationMetricsContract, version 1.0 

Windows.UI.Core.CoreWindowDialogsContract, version 1.0 

Windows.UI.Xaml.Hosting.HostingContract, version 1.0 

Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, version 1.0  

Thursday, January 23, 2020

Usability Matters for the Surface Neo and the Surface Duo

Concept images of Surface Neo and Surfsce Duo devices


In my book (Usability Matters), I cover details about identifying reasons for building apps and planning app development.

Before the new surface devices arrive and trying to avoid the hype, in this post, I want to use the structure and pointers from the book to highlight important areas about which to think.

Assuming you have an existing app and are thinking about adjusting it for these new devices.

Are these devices going to be available where your users are?
These devices are unlikely to be available globally when launched, or even in a few months after. Using the launch of previous Surface devices as a guide, expect them in North America and parts of Western Europe first. If that's not where your users are, then you may be able to wait and learn from the real experiences of others before needing to do work yourself.

Are your users likely to get these devices?
I don't know anyone who reasonably expects these devices to be cheap. They're new, cutting edge devices pushing the boundaries. Such devices aren't something that usually comes cheap. Other Surface devices do not have price tags that make them accessible to everyone. It's tough for device manufacturers to make money from selling devices*, and this also points to an expected higher price point.
If your users aren't already using high-end devices, it's unlikely that they'll start using these devices (or similar) as soon as they're released.

* As an aside, I heard recently of a manufacturer planning to leave the handset business as it is so hard for them to make money.

Will the devices provide opportunities appropriate for your app and users?
At the moment, it's hard to know. What will happen when "real people" get to use these devices? Will they use them in the ways you or Microsoft expect? You will need to research to find this out. While this may not be possible for you yet, what you can do is make sure you understand what your current users are doing. To do so will require adding usage analytics into your app if you don't have them already. 

What is your goal in attempting to understand and develop for these devices?
  • Is it curiosity?
  • Are you a Microsoft fan who is only interested as this is something they're doing?
  • Do you aim to ensure an adequate experience when someone uses your app on such devices?
  • Do you hope to take advantage of the unique opportunities the new form factors will provide in terms of ways of working or using a device?
  • Or, are you looking for a possible boost from being one of a (potentially) small number of apps specifically built or updated to work with these new devices upon their launch?
If you understand your motivation, you'll be able to work towards achieving the related goals. It'll also help you avoid setting inappropriate goals or retrospectively thinking you were setting yourself up for a different possible outcome.

What can you learn from other, existing, two-screen devices?
While there will be differences between the Surface devices and what's currently on the market, there are lessons that can be learned from the similarities or otherwise.

How might you need to think about redesigning different screens for larger sizes?
Do you need to think about dynamic layouts, different orientations, or assets of different sizes?
Will you need to make any changes to your existing logic regarding assumptions about devices based on screen sizes, the number of screens, or device input?

Have you thought about your expectations?
Document your expectations. Then you can act accordingly. Check how they reflect reality or need adjusting as more information comes out.

How are you planning for these new devices and being ready for them?
Set aside times and monitor timelines to learn about, research, and experiment with them. Think about how SDKs, tools, emulators, controls, design concepts, device specs, and announcements about distribution and availability.


Thursday, July 18, 2019

UWP inline design-time data - helper library v1.1

Over the weekend I announced my library to enable inline design-time only data in UWP apps.

Now, I've released an update (v1.1) which allows it to work with the supported properties on any control.
This removes the limitation of only working on default classes and you can use it on any object with the relevant property. This could be your own (custom) control or one from a 3rd party library.

The source is also now available at https://github.com/mrlacey/UwpDesignTimeData