390 likes | 1.16k Views
WPF For PowerBuilder Developers. PowerBuilder Evolving with .NET. Windows Presentation Foundation. WPF is Microsoft's next generation presentation technology Applications can have rich visual appearances 3D graphics High definition playback etc…
E N D
Windows Presentation Foundation • WPF is Microsoft's next generation presentation technology • Applications can have rich visual appearances • 3D graphics • High definition playback • etc… • WPF uses vector-based graphics and is resolution-independent
WPF Sample Contact Manager Contact Manager
WPF Sample Text Editor Text Editor
WPF Feature Highlights • Broad Integration • 3D graphics, video (HD), speech, rich document viewing • ...with one technology • Resolution Independence • Vector-based graphics render/resize to any screen resolution • Hardware Acceleration • Can take advantage of graphics card performance • …cont’d…
WPF Feature Highlights …cont’d… • Declarative Programming • XAML for markup • Rich Composition • Any control may “parent” another • Eventual functionality like… • …async video on each line of a DDLB!
Windows Presentation Foundation • XAML is the declarative markup language with which you may create complex WPF user interfaces • XAML allows separation of UI (markup) from runtime logic • XAML knowledge will not be required, just optional
Windows Presentation Foundation • The change is about the underlying presentation technology • Windows Forms applications use GDI+ • WPF application uses DirectX technology for rendering • DirectX can be rendered using hardware resources • Performance may be improved
Object Models: Win32 / WinForm vs. WPF • WPF has a different object model from Win32 and WinForm • We’re working to preserve the PowerBuilder model while incorporating the WPF “style” • Drastically reduces your learning curve for WPF
Object Models: Win32 / WinForm vs. WPF • For example, WPF controls have a “content” property • PowerBuilder will abstract that to the “Text” property • PowerBuilder will extend WPF controls <my:WPFButton Height="23" Margin="251,0,268,84" Name=“WPFButton1" VerticalAlignment="Bottom" Text="123" />
Object Models: Win32 / WinForm vs. WPF • WPF has introduced many different new concepts: • Dependency Properties, Attached Properties, Commands, Routed Events • A design goal of PowerBuilder 12 is to hide the details of these new concepts and keep the usage similar to existing PowerBuilder
Object Models: Win32 / WinForm vs. WPF • Our goal is to provide you with a “PowerBuilder Experience” when developing WPF applications
PowerBuilder 12WPF Application Architecture • Assemblies of the WPF runtime library • WPF DataWindow engine • New Managed database drivers
PowerBuilder WPF Window:Constraint on Controls • Win32 and WinForm Windows could be the parent of multiple controls • In WPF, a Window may have only one control • Workaround: • Place a Panel, Grid or Canvas, in the Window • We intend to put Canvas Panels in a migrated Window by default
Default “Panel” in the PowerBuilder WPF Window class • By default, a Grid panel will be put inside a Window for new WPF applications • Again, Canvas will be used for migrated applications • Approximating absolute positioning
Grid vs. Canvas • Grid: • Can take more advantage of WPF auto sizing • SizeToContent property is available • Can automatically size controls to length of text for localization/regionalization • Canvas: • Supports positioning elements with explicit coordinates • If we used Grid for migrated applications…position information would not be accurate enough
“InnerControl” Property • InnerControl • Arguably, the most important newly-introduced WPF control property • Allows reference to WPF control directly in PowerScript • Read Only (but properties like Content are writable) • In theory, WPF controls may be infinitely nested within any other WPF controls (one at a time) Cb_1.InnerControl.Content = “Some Contents”;
Third Party Controls • Third party visual controls may now be used in a WYSIWYG fashion in design mode • Conditional code blocks are no longer required for interoperability • When placed on the painter, the IDE will trigger a process to create a proxy object for the control • The proxy will be analogous to traditional OLE/ActiveX interfaces to minimize your learning curve
New Controls Courtesy of WPF Layouts with Panels: • Canvas • Grid • WrapPanel • StackPanel • DockPanel
New Controls Courtesy of WPF Canvas:
New Controls Courtesy of WPF StackPanel:
New Controls Courtesy of WPF WrapPanel Variations:
New Controls Courtesy of WPF DockPanel:
New Controls Courtesy of WPF For the following controls, we may… • Create standard runtime controls …or… • Support them though 3rd party controls (proxy objects) …TBD
New Controls Courtesy of WPF Expander (collapsible GroupBox):
New Controls Courtesy of WPF Expander (collapsible GroupBox):
New Controls Courtesy of WPF MediaPlayer: • Built on top of Windows Media Player • Formats: • WAV • WMA • MP3 • Etc…
New Controls Courtesy of WPF Document Viewer (XPS or Print Preview):
New Controls Courtesy of WPF SpeechRecognizer:
Right-to-Left Support FlowDirection Layout Property:
State of the DataWindow New Features: • From PowerBuilder 11.5 • New background properties • Support for PNG format • Tooltips for all control and column types • Rich Text Edit style • Support for 3rd party controls • May be used with a data binding mechanism in the detail band • Must be consistent with the column’s data type • Expressions are not supported
State of the DataWindow New Features… • XML DataWindow syntax • SRD syntax is still supported • Can run with limited security permissions • New export formats • Excel 2007 • XML paper specification (XPS) • Nested (and Composite) DataWindows • Display in normal, not print preview mode …cont’d…
State of the DataWindow New Features …(cont’d)… • Grid style • Grid line color is a property • Enablesort supports sorting the contents on a specific column • Label • Displays in normal mode, not print preview mode • Managed DataSources in the new Data Source Interface • ADO .NET • Web Services • The classic data sources are still supported The DataWindow will run as fully Managed Code
DataWindow Painter (of the future) In prototype
State of the DataWindow New Architecture: • Separation of • Core functionality • DataWindow objects • Presentation (rendering) functionality • DataWindow controls • Data access • The new Data Source Interface
WPF DataWindow Painter • WYSIWYG design surface for adding, moving, resizing, positioning of DataWindow elements • WYSIWYG Preview • Again, a familiar PowerBuilder experience • Support for 3rd party controls