Vous êtes sur la page 1sur 28

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 customers photo in Image control Display and edit customers 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
Cant bind directlyBorderThickness 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 evaluationwont 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


Whats 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 doesnt 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 isnt null before performing conversion

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Converter Warning
Converter doesnt 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

Vous aimerez peut-être aussi