data binding in gui application development patrick o’brien

26
Data Binding in GUI Application Development Patrick O’Brien

Upload: augustus-pashby

Post on 16-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data Binding in GUI Application Development Patrick O’Brien

Data Binding in GUI Application DevelopmentPatrick O’Brien

Page 2: Data Binding in GUI Application Development Patrick O’Brien

Why use WPF?

•Design patterns

•Superiority to Windows Forms

•Collaboration with designers▫Expression Blend▫XAML

Page 3: Data Binding in GUI Application Development Patrick O’Brien

What is WPF?

•GUI development API released with .NET 3.0

• Immediate predecessor is Windows Forms

•Built on top of DirectX

Page 4: Data Binding in GUI Application Development Patrick O’Brien

WPF Deployment

•Standalone XAML

•Typical - .exe

•XBAP▫Browser based

Page 5: Data Binding in GUI Application Development Patrick O’Brien

XAML (pronounced zammel)

•Extensible Application Markup Language▫XML based

•Can be compiled or interpreted

Page 6: Data Binding in GUI Application Development Patrick O’Brien

Basic XAML

Page 7: Data Binding in GUI Application Development Patrick O’Brien

Basic XAML

Page 8: Data Binding in GUI Application Development Patrick O’Brien

XAML vs. WinForms

•Problem: Implement a ComboBox with CheckBoxes as options in it

•Windows Forms: 600+ SLOC▫http://www.codeproject.com/Articles/

21085/CheckBox-ComboBox-Extending-the-ComboBox-Class-and

Page 9: Data Binding in GUI Application Development Patrick O’Brien

XAML vs. WinForms

Page 10: Data Binding in GUI Application Development Patrick O’Brien

Windows Forms Controls Properties

VS.

VS.

Problems:Easy to get unorganized / inconsistentNumber of lines requirements

Page 11: Data Binding in GUI Application Development Patrick O’Brien

Solution: XAML Styles

•Similar to CSS

•Keeps controls consistent without reusing code

Page 12: Data Binding in GUI Application Development Patrick O’Brien

XAML Styles

To use this:

Page 13: Data Binding in GUI Application Development Patrick O’Brien

XAML Layouts

•Encourage dynamic layouts

•Several options▫DockPanel▫Grid▫StackPanel▫Canvas (not recommended)

Page 14: Data Binding in GUI Application Development Patrick O’Brien

XAML Layouts

Page 15: Data Binding in GUI Application Development Patrick O’Brien

WPF Events

DockPanel

Grid

Button

Page 16: Data Binding in GUI Application Development Patrick O’Brien

Data Binding

•Bindings are inserted into XAML using extensions (curly braces)

•Can set bindings OneWay, TwoWay, OneTime

•DataContext provides a “starting point” for binding

•Path tells property what data to use

Page 17: Data Binding in GUI Application Development Patrick O’Brien

Data Binding

•Simple Example: Bind a Slider’s value to a TextBlock’s font size

Page 18: Data Binding in GUI Application Development Patrick O’Brien

Data Binding

•Bind fonts installed on a computer to a ListBox

DataContext=“{x:Static Fonts.SystemFontFamilies}”Gets the fonts installed and sets them as the context for the ListBox

Text=“{Binding Path=Count, Mode=OneTime}”Sets the tooltip for the list box to display the number of fonts installed

Page 19: Data Binding in GUI Application Development Patrick O’Brien

Advanced Data Binding

•Converting phone numbers in TextBoxes

Page 20: Data Binding in GUI Application Development Patrick O’Brien

PhoneConverter : IValueConverter

Page 21: Data Binding in GUI Application Development Patrick O’Brien

ContactListView

Page 22: Data Binding in GUI Application Development Patrick O’Brien

Design Patterns

•MVC – Model View Controller▫Unfit for WPF

•MVP – Model View Presenter▫Model – Data (Contact, Address, etc.)▫View – Seen by the user▫Presenter – Handles communication

between Model and View

Page 23: Data Binding in GUI Application Development Patrick O’Brien

MVP

•Each View will have a corresponding Presenter

•ApplicationPresenter represents the application as a whole▫Individual Presenters use an instance of

ApplicationPresenter to interact with controls

Page 24: Data Binding in GUI Application Development Patrick O’Brien

ContactListView.xaml.cs

Page 25: Data Binding in GUI Application Development Patrick O’Brien

ContactListPresenter.cs

Page 26: Data Binding in GUI Application Development Patrick O’Brien

Questions?