Windows 8: Binding

Page 1

Windows 8 Binding – Part 1 http://www.LearnNowOnline.com

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Objectives • Learn to use Binding objects to bind data sources and targets • Add data converters to manage conversion during the binding process • Use data templates to modify the layout of bound data in lists

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Agenda • • • •

Introducing Binding Working with Type Converters Binding Lists and Data Templates Using Binding and Data Templates

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


When to Use Binding? • Display the number of characters in a text box, in a TextBlock control • Display the value of Slider control in a TextBlock • Display list of customers in ListBox • Display customer’s photo in Image control • Display and edit customer’s name in TextBox • Of course, there are an infinite number of reasons Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Connecting Sources and Targets • Every time you use binding • Must supply source for data, and target • Normally, target is dependency property of some

user interface element

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Connecting Sources and Targets • Binding source: any property of any object • Binding object connects source to binding target • Must be dependency property of some

DependencyObject instance

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Under the Hood • When using binding in XAML • Create instance of Binding class, setting various

properties that affect its behavior

• XAML provides binding markup extension • Hides this fact, but still working with Binding object • Completely transparent if you create Binding object

in code

• Can set Mode property of Binding to control direction of data flow (one/two directions?) Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Value Converters • Value Converter provides instance of class that implements Windows.UI.Xaml.Data.IValueConverter interface • Binding declaratively often requires value converter

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Value Converters • Select a customer from a ListBox, display combined FirstName and LastName fields in TextBlock • Select an integer, bind to BorderThickness of Border • Can’t bind directly—BorderThickness is a Thickness

structure

• Infinite reasons to use a value converter • But only if binding declaratively Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


A Few Simple Examples • SimpleBinding1 • SimpleBinding2

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Binding Details • Standard Binding markup extension includes ElementName and Path attributes: • Text="{Binding ElementName=DemoSlider,

Path=Value}"

• Path attribute not required: • Text="{Binding Value,

ElementName=DemoSlider}"

• Choose whichever you like Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Binding Details • Path property can refer to property, or property of a property, or indexed property • Need to refer to an attached property? • Grid.Row, for example • Set Path property to (Grid.Row) (in parentheses) • Parentheses force evaluation—won’t work without • Parentheses not necessary for property of a property

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Binding Details • Binding Markup extension shortcut for child element syntax: <TextBox Width="40" Name="DemoTextBox" Height="23"> <TextBox.Text> <Binding ElementName="DemoSlider" Path="Value" /> </TextBox.Tet> </TextBox> Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Setting the Binding Mode • In demo, data moves from Slider to TextBox • Changes in TextBox have no effect on slider

• Binding is one-way: Data moves in one direction • Set Mode property of Binding to change • OneTime • OneWay • TwoWay Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


DEMO • Two-way binding, SimpleBinding3

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


A Simple Example • Enter text into TextBox, update TextBlock with length of the text • Could react to TextChanged event of TextBox • Better: Bind Text property of TextBlock to Text.Length property of TextBox • Points out that binding can use expressions

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


DEMO • SimpleBinding4

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Agenda • • • •

Introducing Binding Working with Type Converters Binding Lists and Data Templates Using Binding and Data Templates

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Using a Type Converter • Determine source and target data types • Write code to perform the conversion • Perhaps write code to convert back (for two-way

binding)

• Sample binds integer from combo box to BorderThickness property • What’s the problem? Thickness structure has four

values

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Creating the Type Converter • Attempt to bind SelectedValue of ComboBox to BorderThickness of Border, and doesn’t work • Need type (or value) converter

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Converters • Implement IValueConverter interface • Requires Convert and ConvertBack methods • Parameters: • value (System.Object) • targetType (System.Type) • parameter (System.Object) • Language (System.String)

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Handle Null Case • Always possible that value will be null • Code runs at design time!

• Always verify that value isn’t null before performing conversion

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Converter Warning • Converter doesn’t trap exceptions • Treated as runtime errors

• You must trap and handle all runtime errors • Return DependencyProperty.UnsetValue on

error

• Not handled in this simple demo • Worth considering!

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


DEMO • IntegerToThicknessConverter

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Referencing the Type Converter • Need way to refer to type converter in XAML • Like any other resource, declare instance in resources; Page.Resources in demo • Need namespace reference • xmlns:local="using:Binding"

• Then, within Page.Resources: • <local:IntegerToThicknessConverter

x:Key="thicknessConverter" /> Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Using the Type Converter • Add a setting in Binding markup extension • <Border BorderThickness="{Binding ElementName=ThicknessComboBox, Path=SelectedValue, Converter={StaticResource thicknessConverter}}" BorderBrush="Black" Margin="5">

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


Using the Visual Studio Designer • DEMO

Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company


End of Part 1 http://www.LearnNowOnline.com

Learn More @ http://www.learnnowonline.com Copyright Š by Application Developers Training Company


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.