Compare to WPF + UWP
Advanced developers have done masterful things with WPF, but it can be daunting for others. Here are some key differences between WPF and Frogui that have been implemented or are slated to be added. These are not set in stone; we don't want to change something you love!
Host control
The WPF ContentControl has been replaced by the Host control, which has a Child property instead of the Content property, eliminating use of object types.
Anchors
Anchors are to attach children to parent Panel objects, instead of attached properties.
Web-Based Units
The WPF unit of measure is a device-independent unit (1/96th inch). Frogui uses all of CSS3's units of measure (%, cm, em, ex, in, mm, pc, pt, px, vh, wv, vmin) comprehensively. A Length struct is used instead of a double.
Grid element
The WPF grid element has been spruced up with features available in the web grid element, such as gutters and track naming.
Flex element
The Flex element add the power of the web's flexbox module. It is used in lieu of WPF's StackPanel and WrapPanel elements.
Control class
The Control class has been simplified as a part of the effort to implement motifs.
Single-Page and Multi-Page Apps
A single-page web app (SPA) exists completely in the browser and does not rely on a web server for additional pages, very much like a mobile or desktop app, without browser page navigation.A multi-page web app (MPA) follows the common pattern of having each page represented a unique URL. Frogui has both SpaApplication and MpaApplication classes for SPA and MPA apps, respectively.
Console Apps
In additional to UI apps, Frogui includes a lightweight console (text terminal) emulator control named Console and an application type of ConsoleApplication.
Frogui XAML
Frogui XAML is similar to the flavors of Microsoft XAML. They all:
-
Allow editing using a WYSIWYG design tool without need to interact with code (pending).
-
Declare element layouts with properties and events.
-
Declare resources (cascading asset sheets).
-
Declare styles.
-
Declare visual states.
-
Declare data templates (motifs).
-
Have associated code-behind file.