Platform Specific UI Interop Layers Generated Base MDL Model Definition Generated ViewModel XAML Interop (INPC) XAML UIJNI InteropJava UIiOS InteropiOS UIUnit Tests
C++CXC++ (using WRL)
// some simple code… control->RenderTransform->X = 25.0; // turns into control->QueryInterface(IID_PPV_ARGS(pUIE.GetAddressOf())); pUIE->get_RenderTransform(&pTransform); pTransform->QueryInterface( IID_PPV_ARGS(pTranslate.GetAddressOf())); pTranslate->put_X(25.0); // what’s so bad? Well… If (control->RenderTransform->X != newTransformX) control->RenderTransform->X = newTransformX; If (control->RenderTransform->Y != newTransformY) control->RenderTransform->Y = newTransformY;
Application Thread UI ThreadCompositor Thread Channel WinRT Backend XAML Direct Composition Channel Android Backend Java Views Channel In-Process Direct3D Compositor iOS & Mac Frontend talks directly with Core Animation Core Animation Win32 XAML Android iOS OSX Shared C++ Layout Rendering AirSpace Frontend Some Code Sharing + Platform- Specific Forking
ThemeTransition s Easy Implicit Limited customization Storyboards Fully customizable Verbose Difficult to make consistent Require Custom Triggers