SlideShare a Scribd company logo
Whatโ€™s New In Silverlight 5Jeff BrandDeveloper and Platform TeamMicrosoftjbrand@microsoft.com | slickthought.net | @jabrand
Silverlight 5 whats new overview
Silverlight 5 whats new overview
Silverlight 5 whats new overview
Silverlight 5 whats new overview
Silverlight 5 whats new overview
Silverlight 5 whats new overview
HighlightsIE 10
HTML 5
Improved Graphics Acceleration
Speed Improvements
Mango
16 more languages
Nokia
Cut &Paste; Multi Tasking; Dev Tool Improvements
IE speed improvements (22 fps vs. 11 fps for Android and 2 fps for iPhone)
Silverlight 5
Beta Delivered
Rich Media
Hardware Video Decode
XNA for 3D Rendering
NUI & Windows Touch
Surface SDK 2 for Surface and Windows Touch Enables Devices
Tons of other topics!MiX content onlinehttp://www.microsoft.com/events/mix/default.aspxhttp://ie.microsoft.com/testdrive/http://www.silverlight.net/getstarted/silverlight-5-beta/http://www.microsoft.com/web/http://orchard.codeplex.com/
Whatโ€™s New in Silverlight 5
AgendaMVVM Databinding EnhancementsBinding In Style SettersImplicitDataTemplatesRelativeSource Ancestor BindingsCustom Markup ExtensionsDatabinding DebuggingDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & MediaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bit
Focused on your top asks:User Voice:
DataBinding EnhancementsEnabling MVVM, but also just more productive
Layers Of Our ApplicationsPresentation logicUI (XAML)UI (XAML)OrdersUI (XAML)PeopleAppointmentsCode Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Not reusableHow to test?How to reuse?How can the designer update the UIHow to provide different viewsLaptop/DesktopTablet/Slate w/TouchPhoneModelsServicesJSONRIAEFPOCOXMLRESTWeb ServicesWeb ServicesWCFVehiclesTaxPersonVehicleCalendarPeopleSchedulesShippingOrdersDataSQL ServerOracleTelco SwitchesMedia Streams
MVVMTest FrameworkVisual Studio Team TestLaptop/DesktopAppointmentsTablet/SlateAppointmentsPhoneAppointmentsCode Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Aggregation of data & services for your presentation logicClass LibrariesViewModel(VM.cs/vbTest API w/VSTTLeverage logic across UIsDesigner parties on XAMLSkin across varied form factorsLaptop/DesktopTablet/Slate w/TouchPhoneModelsServicesJSONRIAEFPOCOXMLRESTWeb ServicesWeb ServicesWCFVehiclesTaxPersonVehicleCalendarPeopleSchedulesShippingOrdersDataSQL ServerOracleTelco SwitchesMedia Streams
Benefits of MVVM
MVVM EnhancementsSilverlight 5 Binding In Style SettersImplicitDataTemplatesRelativeSource Ancestor BindingsCustom Markup ExtensionsDatabinding DebuggingDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & MediaReduce the need for UI codeHow to reduce code?Enhance DataBinding
MVVM EnhancementsBinding In Style SettersImplicitDataTemplatesRelativeSource Ancestor BindingsCustom Markup ExtensionsDatabinding DebuggingDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
Binding Style SettersHow do I change styles without shipping new XAML?Can I set the styles in the database?demo
Binding Style Setters How It WorksCreate a Class to expose your valuesInstance the Class in your ResourcesBind the value to the instanced resourcenamespaceMyProject.Styles {  publicclassMyAppStyles: INotifyPropertyChanged{publicBrushForegroundColor{get{ return _foregroundColor; }set { _foregroundColor = value;NotifyPropertyChanged("ForegroundColor");<ResourceDictionaryxmlns:stylesNS="clr-namespace:MyProject.Styles"><stylesNS:MyAppStyles x:Key=โ€œMyAppStyles"/><StyleTargetType="TextBlock"><Setter Property="Foreground"Value="{BindingForegroundColor}, Source={StaticResourceMyAppStyles}โ€
MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSourceAncestor BindingsDatabindingDebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
Implicit Data Templates<Application.Resources><ResourceDictionary><DataTemplatex:Key="vehiclesDataTemplate">DataType="models:Vehicle"><Image Source="Vehicle.png"/></DataTemplate>    </ResourceDictionary></Application.Resources><Application.Resources>	<ResourceDictionary><DataTemplatex:Key="stateDataTemplate">DataType=โ€œmodels:State"><Grid><StackPanel Orientation="Horizontal"><TextBlock Text="{BindingStateCode}"/><TextBlock Text="{BindingStateName}"/></StackPanel></Grid></DataTemplate>	</ResourceDictionary></Application.Resources><Application.Resources><ResourceDictionary><!--Default Vehicle DataTemplate--><DataTemplateDataType="models:Vehicle"><Image Source="Vehicle.png"/></DataTemplate><DataTemplateDataType="models:Car"><Image Source="Car.png"/></DataTemplate><DataTemplateDataType="models:Truck"><Image Source="Truck.png"/></DataTemplate><DataTemplateDataType="models:Motorcycle"><Image Source="Motorcycle.png"/></DataTemplate>	</ResourceDictionary></Application.Resources><Application.Resources>	<ResourceDictionary><DataTemplate x:Key=โ€œStatesDataTemplate"><Grid><StackPanel Orientation="Horizontal"><TextBlock Text="{BindingStateCode}"/><TextBlock Text="{BindingStateName}"/></StackPanel></Grid></DataTemplate>	</ResourceDictionary></Application.Resources>Template Based On TypeHeterogeneous CollectionsWith Inheritance Hierarchy demo
MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabindingDebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
Relative Source Ancestor BindingHow do I bind to data up the visual tree?namespaceSLInsurance.ViewModels{publicclassAppointmentsViewModel{publicObservableCollection<Appointments> Appointments{ get; set; }  publicObservableCollection<Status> Status{get; set; }namespaceSLInsurance.Views{publicpartialclassAppointmentView: UserControl {...this.DataContext= newViewModels.AppointmentViewModel();<ListBoxItemsSource="{BindingPath=Appointments}"><ListBox.ItemTemplate><DataTemplate><Grid ...	<TextBlockText="{BindingTime}" โ€ฆ	<ComboBoxItemsSource="{BindingDataContext.Status,RelativeSource={RelativeSourceFindAncestorAncestorType=UserControl,		  Mode=FindAncestor}}"
Relative Source Ancestor BindingUsed For Control Hierarchy Binding As Well<DataTemplate x:Key="StateComboBoxDataTemplate">  <StackPanel Orientation="Horizontal">    <TextBlock Text="{BindingStateCode}"Margin="0,0,5,0"/>    <TextBlock Text="{BindingStateName}"Visibility="{BindingIsDropDownOpen,RelativeSource={RelativeSourceFindAncestorAncestorType=ComboBox},               Converter={StaticResourceBoolToVisibilityConverter}}"/></StackPanel>demo
MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
DataBinding Debuggingdemo
DataBinding DebuggingXAML BreakpointsBreak when objects are bound, such as Grid Cycling((System.Windows.Data.Debugging.BindingDebugState)BindingState).Error != nullLocals:Dig into whatโ€™s working, whatโ€™s notFull Debugging SupportBound Instance & TypeValues of the Final SourcePipelineInitial
AfterValue
AfterStringFormat
AfterTypeConversion
โ€ฆMVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
Custom Markup Extensionsdemo
Custom Markup ExtensionsHow do I get my event handler code out of my Code Behind<ListBoxx:Name="appointmentsListbox"ItemsSource="{Binding Appointments}"SelectionChanged="OnAppointmentsListbox_SelectionChanged">UI (XAML)publicpartialclassAppointments: UserControl{privatevoidOnAppointmentsListbox_SelectionChanged(object sender, SelectionChangedEventArgs e){this.DataService.GetClaimById(GetClaimsCallback, ((AdjusterAppointment) (this.appointmentsListbox.SelectedItem)).Claim_Id); 	}privatevoidGetClaimsCallback(ObservableCollection<Claim> claims) {this.AppoinmentsListBox.Items.Add(claims[0]);Code Behind (XAML.cs/vb)ViewModel(VM.cs/vbServicesModelspublicvoidGetClaimById(Action<ObservableCollection<Claim>> callback, stringclaim_Id) {varquery = DataContext.GetClaimByIdQuery(claim_Id);	_getClaimCallback = callback;	_claimLoadOperation = DataContext.Load<Claim>(query);	โ€ฆData
Custom Markup ExtensionHow It WorkspublicclassMethodInvokeExtension: IMarkupExtension<object> {	// Properties Exposed in XAML as Intellisense LovepublicStringMethod{ get; set; }	// Invoked by the XAML Parser @ runtime	publicobjectProvideValue(IServiceProviderserviceProvider) {<UserControl x:Class=โ€œAppointmentsView"xmlns:MyUtils="clr-namespace:SLInsurance;assembly=SLInsurance">...<StackPanel x:Name="LayoutRoot">  <ComboBoxName=โ€œappointmentsListBox"SelectionChanged="{MyUtils:MethodInvoke Method=OnAppointmentChanged}"
MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
DataContextChanged EventIt just worksIncrease Memory Efficiency โ€œhandle referencesโ€this.DataContextChanged += View_DataContextChanged;โ€ฆvoidView_DataContextChanged(objectsender, DependencyPropertyChangedEventArgs e) {INotifyPropertyChanged customer;    customer = e.OldValueasINotifyPropertyChanged;if (customer != null)customer.PropertyChanged -= customer_PropertyChanged;    customer = e.NewValueasINotifyPropertyChanged;if (customer != null)customer.PropertyChanged += customer_PropertyChanged;}
MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
UpdateSourceTriggerHow can I get key stroke changes?<TextBoxName="vinTextBox"Text="{BindingSelectedClaim.InsuredVIN, Mode=TwoWay}"TextChanged="vinTextBox_TextChanged"UI (XAML)privatevoidvinTextBox_TextChanged(object sender, TextChangedEventArgs e) {Helpers.VinCarInfocarInfo = Helpers.VINParser.Parse(vinTextBox.Text);this.vehicleYearsAutoComplete.Text = carInfo.Year.Value.ToString();this.vehicleMakeAutoComplete.Text = carInfo.Make;this.vehicleModelComboBox.SelectedValue = carInfo.Model;Code Behind (XAML.cs/vb)ViewModel(VM.cs/vbpublicvoidLoadVehicleYears() {this.DataService.GetVehicleYears(GetVehicleYearsCallback);}publicvoidLoadVehicleMakes(Nullable<int> year) {if(year.HasValue) {this.DataService.GetVehicleMakes(GetVehicleMakessCallback, year.Value);โ€ฆpublicvoidLoadVehicleModels(Nullable<int> year, string make) {if(year.HasValue) {this.DataService.GetVehicleModels(GetVehicleModelssCallback, year.Value, make);ServicesModelspublicvoidGetVehicleMakes(Action<ObservableCollection<string>> callback, int year) {            _getVehicleMakesCallback = callback;this.SearchServiceClient.GetVehicleMakesCompleted += OnGetVehicleMakesCompleted;this.SearchServiceClient.GetVehicleMakesAsync(year);}Data
UpdateSourceTriggerMoving code from the UI to the testable ViewModel<TextBoxName="vinTextBox"Text="{BindingSelectedClaim.InsuredVIN, Mode=TwoWay}"UpdateSourceTrigger=PropertyChanged}"UI (XAML)Code Behind (XAML.cs/vb)ViewModel(VM.cs/vbvoidOnClaimPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {switch(e.PropertyName) {case"InsuredVIN":ParseVIN();break;โ€ฆprivate voidParseVIN() {Helpers.VinCarInfocarInfo = Helpers.VINParser.Parse(this.SelectedClaim.InsuredVIN);this.SelectedClaim.InsuredYear= carInfo.Year;this.SelectedClaim.InsuredMake= carInfo.Make;this.SelectedClaim.InsuredModel= carInfo.Model;โ€ฆServicesModelsData
UpdateSourceTriggerdemo
MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
WCF RIA Services for Silverlight 5Complex Types (SP1)Custom ClientCode Gen(SP1)EF Code First(coming soon)DateTimeOffsetMVVM Support
But Wait, Thereโ€™s MoreBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & MediaTextPrintingMedia
Text EnhancementsCum sociisnatoquepenatibus et magnis dis parturient montes, nasceturridiculus mus. Pellentesque habitant morbitristiquesenectus et netus et malesuada fames ac turpisegestas. Vivamusenim dolor, molestie at auctor id, auctorultrices nisi. Curabitururnalorem, luctushendreritdapibusquis, facilisissedorci. Aliquamnuncmassa, placerat id pretiumeget, luctus sit amet diam. Vestibulum ante ipsumprimis in faucibusorciluctus et ultricesposuerecubiliaCurae; Pellentesquefermentumneque at nislbibendumcursus. Aliquamsollicitudineliteununcplacerat et pulvinarmauriscondimentum. Donecsedsapienelit, velcondimentumjusto. Cum sociisnatoquepenatibus et magnis dis parturient montes, nasceturridiculus mus. Ututodionunc. Maecenas vitae quam urna. Nulla a ante imperdietsemtinciduntporta. Donecesttellus, imperdietegetullamcorpereu, laoreetvellorem. FusceornarenislLinked Text ContainersFlow Rich Text from one container to anotherDynamically flows on resizemollis lacus cursus semper suscipiturnaultricies. Phasellus magna justo, commodosodalesauctornec, euismod vitae purus.Vivamusdignissimfeugiattristique. Crasaliquetsapien non justosagittisimperdiet. In a velitmauris, eusodales magna. Fuscelectuslectus, blandit non semper vitae, cursusutpurus. Vestibulumquisaliquamaugue. Morbiid estseddiamimperdietpretium vitae a turpis. Sedvelsapienarcu. Loremipsum dolor sit amet, consecteturadipiscingelit. Suspendisse ac diamut ante imperdietlacinia. Integer sit ametjusto sit amettortorfacilisis id sit ametaugue. Etiam in risusveleratmolestieviverra. Suspendissepellentesquebibendumsagittis. Etiamconvallisleo at dui ornareegetelementumodio dictum. Integer tempus ultricieslectus. Maecenas dictum ipsum id nisladipiscingeuiaculistortorsuscipit. Etiamsedsapienneque, in ultricies magna. Aliquam in nisl et lectusbibendumvestibulum. Donecsuscipit, velit vitae convallisaccumsan, tortor magna dignissimpurus, sedconvallisorcitortorsed sem. Crasquisest id turpiscongueporta. Proinpharetramattisnullaquisvestibulum.<RichTextBoxOverflowContentTarget="{Binding ElementName=overflow1}"><RichTextBoxOverflow x:Name="overflow1"OverflowContentTarget="{BindingElementName=overflow2}"><RichTextBoxOverflow x:Name="overflow2"OverflowContentTarget="{BindingElementName=overflow3}">...Utin sapien id maurisegestasrhoncus a egeterat. Vivamustempor tempus quam facilisisdapibus. Curabiturvolutpatipsum vitae tortortinciduntsedmalesuadaurnatincidunt. Quisqueporttitor, neque id malesuadafaucibus, quam leoauctornisl, quisaliquetenim ligula utodio. Etiamvelturpis magna. Crasiaculisest sem. Pellentesquemalesuada, liberoeutemportempor, tellusipsumdignissimsapien, id facilisisaugueipsum vitae quam. Crasquisimperdietleo. In orcipurus, placerat ac ultricies in, elementum vitae turpis. Nunclectussapien, sagittis id luctusut, hendreritutmassa. Sedpurussapien, pharetra id faucibusnec, semper id lacus. Phasellus et lectusleo, egetadipiscinglorem. Donecfermentum lacus dolor. Etiamlaoreettristique nisi, sit ametconvallisnunclacinia et. Integer aliquam, magna ac porttitorcongue, estliberoconsectetur lacus, lobortisportaorcirisusnec magna. Integer sapienpurus, volutpat sit ametvehicula vitae, accumsan a felis. Sed a nullavelenimlaoreetconsequat. Nullautnequemassa, at semper enim.risusnec magna. Integer sapienpurus, volutpat sit ametvehicula vitae, accumsan a felis. Sed a nullavelenimlaoreetconsequat. Nullautnequemassa, at semper enim.
Text ClaritySharpens text by snapping with pixelsGreat for low res devices
BitmapVectorVector Printing
Ad

More Related Content

What's hot (20)

Csphtp1 20
Csphtp1 20Csphtp1 20
Csphtp1 20
HUST
ย 
Learning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client DevelopersLearning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client Developers
Kathy Brown
ย 
HTML5 and Beyond
HTML5 and BeyondHTML5 and Beyond
HTML5 and Beyond
dynamis
ย 
A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...
A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...
A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...
GoogleTecTalks
ย 
Html5 deciphered - designing concepts part 1
Html5 deciphered - designing concepts part 1Html5 deciphered - designing concepts part 1
Html5 deciphered - designing concepts part 1
Paxcel Technologies
ย 
Web Development Course - HTML5 & CSS3 by RSOLUTIONS
Web Development Course - HTML5 & CSS3 by RSOLUTIONSWeb Development Course - HTML5 & CSS3 by RSOLUTIONS
Web Development Course - HTML5 & CSS3 by RSOLUTIONS
RSolutions
ย 
API
APIAPI
API
Masters Academy
ย 
Basics of css and xhtml
Basics of css and xhtmlBasics of css and xhtml
Basics of css and xhtml
sagaroceanic11
ย 
Jquery
JqueryJquery
Jquery
Gulbir Chaudhary
ย 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overview
ukdpe
ย 
HTML5
HTML5HTML5
HTML5
Hatem Mahmoud
ย 
HTML5: a quick overview
HTML5: a quick overviewHTML5: a quick overview
HTML5: a quick overview
Mark Whitaker
ย 
Html5 tutorial for beginners
Html5 tutorial for beginnersHtml5 tutorial for beginners
Html5 tutorial for beginners
Singsys Pte Ltd
ย 
Net course content
Net course contentNet course content
Net course content
mindq
ย 
Thug: a new low-interaction honeyclient
Thug: a new low-interaction honeyclientThug: a new low-interaction honeyclient
Thug: a new low-interaction honeyclient
Angelo Dell'Aera
ย 
HTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationHTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input Validation
Todd Anglin
ย 
Learning to run
Learning to runLearning to run
Learning to run
dominion
ย 
Play Your API with MuleSoft API Notebook
Play Your API with MuleSoft API NotebookPlay Your API with MuleSoft API Notebook
Play Your API with MuleSoft API Notebook
Rakesh Kumar Jha
ย 
SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...
SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...
SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...
George McGeachie
ย 
Gwt 2,3 Deep dive
Gwt 2,3 Deep diveGwt 2,3 Deep dive
Gwt 2,3 Deep dive
Return on Intelligence
ย 
Csphtp1 20
Csphtp1 20Csphtp1 20
Csphtp1 20
HUST
ย 
Learning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client DevelopersLearning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client Developers
Kathy Brown
ย 
HTML5 and Beyond
HTML5 and BeyondHTML5 and Beyond
HTML5 and Beyond
dynamis
ย 
A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...
A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...
A World Beyond Ajax Accessing Googles Ap Is From Flash And Non Java Script En...
GoogleTecTalks
ย 
Html5 deciphered - designing concepts part 1
Html5 deciphered - designing concepts part 1Html5 deciphered - designing concepts part 1
Html5 deciphered - designing concepts part 1
Paxcel Technologies
ย 
Web Development Course - HTML5 & CSS3 by RSOLUTIONS
Web Development Course - HTML5 & CSS3 by RSOLUTIONSWeb Development Course - HTML5 & CSS3 by RSOLUTIONS
Web Development Course - HTML5 & CSS3 by RSOLUTIONS
RSolutions
ย 
Basics of css and xhtml
Basics of css and xhtmlBasics of css and xhtml
Basics of css and xhtml
sagaroceanic11
ย 
Entity Framework Overview
Entity Framework OverviewEntity Framework Overview
Entity Framework Overview
ukdpe
ย 
HTML5: a quick overview
HTML5: a quick overviewHTML5: a quick overview
HTML5: a quick overview
Mark Whitaker
ย 
Html5 tutorial for beginners
Html5 tutorial for beginnersHtml5 tutorial for beginners
Html5 tutorial for beginners
Singsys Pte Ltd
ย 
Net course content
Net course contentNet course content
Net course content
mindq
ย 
Thug: a new low-interaction honeyclient
Thug: a new low-interaction honeyclientThug: a new low-interaction honeyclient
Thug: a new low-interaction honeyclient
Angelo Dell'Aera
ย 
HTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input ValidationHTML5 Mullet: Forms & Input Validation
HTML5 Mullet: Forms & Input Validation
Todd Anglin
ย 
Learning to run
Learning to runLearning to run
Learning to run
dominion
ย 
Play Your API with MuleSoft API Notebook
Play Your API with MuleSoft API NotebookPlay Your API with MuleSoft API Notebook
Play Your API with MuleSoft API Notebook
Rakesh Kumar Jha
ย 
SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...
SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...
SAP PowerDesigner Masterclass for the UK SAP Database & Technology User Group...
George McGeachie
ย 

Viewers also liked (7)

Conventions of a music video
Conventions of a music videoConventions of a music video
Conventions of a music video
srallison
ย 
Social media trends
Social media trendsSocial media trends
Social media trends
Vreni Bean
ย 
What's New in Windows Phone "Mango"
What's New in Windows Phone "Mango"What's New in Windows Phone "Mango"
What's New in Windows Phone "Mango"
mdc11
ย 
2014 entry electrical engineering
2014 entry electrical engineering2014 entry electrical engineering
2014 entry electrical engineering
University of Brighton
ย 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
mdc11
ย 
Music Theory
Music TheoryMusic Theory
Music Theory
srallison
ย 
MVVM Light Toolkit Works Great, Less Complicated
MVVM Light ToolkitWorks Great, Less ComplicatedMVVM Light ToolkitWorks Great, Less Complicated
MVVM Light Toolkit Works Great, Less Complicated
mdc11
ย 
Conventions of a music video
Conventions of a music videoConventions of a music video
Conventions of a music video
srallison
ย 
Social media trends
Social media trendsSocial media trends
Social media trends
Vreni Bean
ย 
What's New in Windows Phone "Mango"
What's New in Windows Phone "Mango"What's New in Windows Phone "Mango"
What's New in Windows Phone "Mango"
mdc11
ย 
2014 entry electrical engineering
2014 entry electrical engineering2014 entry electrical engineering
2014 entry electrical engineering
University of Brighton
ย 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
mdc11
ย 
Music Theory
Music TheoryMusic Theory
Music Theory
srallison
ย 
MVVM Light Toolkit Works Great, Less Complicated
MVVM Light ToolkitWorks Great, Less ComplicatedMVVM Light ToolkitWorks Great, Less Complicated
MVVM Light Toolkit Works Great, Less Complicated
mdc11
ย 
Ad

Similar to Silverlight 5 whats new overview (20)

Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
Jonas Follesรธ
ย 
Practical OData
Practical ODataPractical OData
Practical OData
Vagif Abilov
ย 
MSDN Unleashed: WPF Demystified
MSDN Unleashed: WPF DemystifiedMSDN Unleashed: WPF Demystified
MSDN Unleashed: WPF Demystified
Dave Bost
ย 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
Sanchit Dua
ย 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
ukdpe
ย 
Industrial training in .net
Industrial training in .netIndustrial training in .net
Industrial training in .net
ResistiveTechnosource Pvt. Ltd.
ย 
What's New for Data?
What's New for Data?What's New for Data?
What's New for Data?
ukdpe
ย 
Walther Aspnet4
Walther Aspnet4Walther Aspnet4
Walther Aspnet4
rsnarayanan
ย 
Dot net training bangalore
Dot net training bangaloreDot net training bangalore
Dot net training bangalore
IGEEKS TECHNOLOGIES
ย 
DODN2009 - Jump Start Silverlight
DODN2009 - Jump Start SilverlightDODN2009 - Jump Start Silverlight
DODN2009 - Jump Start Silverlight
Clint Edmonson
ย 
Building Data Centric Apps in WPF
Building Data Centric Apps in WPFBuilding Data Centric Apps in WPF
Building Data Centric Apps in WPF
Frank La Vigne
ย 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
Sanchit Dua
ย 
Modelibra Software Family
Modelibra Software FamilyModelibra Software Family
Modelibra Software Family
dzenanr
ย 
Net Framework Hima
Net Framework HimaNet Framework Hima
Net Framework Hima
HimaVejella
ย 
php
phpphp
php
bhuvana553
ย 
Letsleads dot net-syllabus
Letsleads dot net-syllabusLetsleads dot net-syllabus
Letsleads dot net-syllabus
letsleads
ย 
ASPNET for PHP Developers
ASPNET for PHP DevelopersASPNET for PHP Developers
ASPNET for PHP Developers
Wes Yanaga
ย 
MSDN Dec2007
MSDN Dec2007MSDN Dec2007
MSDN Dec2007
guest1d32f3
ย 
Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)
Igor Moochnick
ย 
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Sparkhound Inc.
ย 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
Jonas Follesรธ
ย 
Practical OData
Practical ODataPractical OData
Practical OData
Vagif Abilov
ย 
MSDN Unleashed: WPF Demystified
MSDN Unleashed: WPF DemystifiedMSDN Unleashed: WPF Demystified
MSDN Unleashed: WPF Demystified
Dave Bost
ย 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
Sanchit Dua
ย 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
ukdpe
ย 
What's New for Data?
What's New for Data?What's New for Data?
What's New for Data?
ukdpe
ย 
Walther Aspnet4
Walther Aspnet4Walther Aspnet4
Walther Aspnet4
rsnarayanan
ย 
Dot net training bangalore
Dot net training bangaloreDot net training bangalore
Dot net training bangalore
IGEEKS TECHNOLOGIES
ย 
DODN2009 - Jump Start Silverlight
DODN2009 - Jump Start SilverlightDODN2009 - Jump Start Silverlight
DODN2009 - Jump Start Silverlight
Clint Edmonson
ย 
Building Data Centric Apps in WPF
Building Data Centric Apps in WPFBuilding Data Centric Apps in WPF
Building Data Centric Apps in WPF
Frank La Vigne
ย 
Best practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata APIBest practices in using Salesforce Metadata API
Best practices in using Salesforce Metadata API
Sanchit Dua
ย 
Modelibra Software Family
Modelibra Software FamilyModelibra Software Family
Modelibra Software Family
dzenanr
ย 
Net Framework Hima
Net Framework HimaNet Framework Hima
Net Framework Hima
HimaVejella
ย 
Letsleads dot net-syllabus
Letsleads dot net-syllabusLetsleads dot net-syllabus
Letsleads dot net-syllabus
letsleads
ย 
ASPNET for PHP Developers
ASPNET for PHP DevelopersASPNET for PHP Developers
ASPNET for PHP Developers
Wes Yanaga
ย 
MSDN Dec2007
MSDN Dec2007MSDN Dec2007
MSDN Dec2007
guest1d32f3
ย 
Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)
Igor Moochnick
ย 
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Optimizing Code Reusability for SharePoint using Linq to SharePoint & the MVP...
Sparkhound Inc.
ย 
Ad

Recently uploaded (20)

Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
ย 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
ย 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
ย 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
ย 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
ย 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
ย 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
ย 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
ย 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
ย 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
ย 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
ย 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
ย 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
ย 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
ย 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
ย 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
ย 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
ย 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
ย 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
ย 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
ย 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
ย 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
ย 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
ย 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
ย 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
ย 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
ย 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
ย 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
ย 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
ย 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
ย 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
ย 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
ย 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 

Silverlight 5 whats new overview

  • 1. Whatโ€™s New In Silverlight 5Jeff BrandDeveloper and Platform [email protected] | slickthought.net | @jabrand
  • 12. Mango
  • 14. Nokia
  • 15. Cut &Paste; Multi Tasking; Dev Tool Improvements
  • 16. IE speed improvements (22 fps vs. 11 fps for Android and 2 fps for iPhone)
  • 21. XNA for 3D Rendering
  • 23. Surface SDK 2 for Surface and Windows Touch Enables Devices
  • 24. Tons of other topics!MiX content onlinehttp://www.microsoft.com/events/mix/default.aspxhttp://ie.microsoft.com/testdrive/http://www.silverlight.net/getstarted/silverlight-5-beta/http://www.microsoft.com/web/http://orchard.codeplex.com/
  • 25. Whatโ€™s New in Silverlight 5
  • 26. AgendaMVVM Databinding EnhancementsBinding In Style SettersImplicitDataTemplatesRelativeSource Ancestor BindingsCustom Markup ExtensionsDatabinding DebuggingDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & MediaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bit
  • 27. Focused on your top asks:User Voice:
  • 28. DataBinding EnhancementsEnabling MVVM, but also just more productive
  • 29. Layers Of Our ApplicationsPresentation logicUI (XAML)UI (XAML)OrdersUI (XAML)PeopleAppointmentsCode Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Not reusableHow to test?How to reuse?How can the designer update the UIHow to provide different viewsLaptop/DesktopTablet/Slate w/TouchPhoneModelsServicesJSONRIAEFPOCOXMLRESTWeb ServicesWeb ServicesWCFVehiclesTaxPersonVehicleCalendarPeopleSchedulesShippingOrdersDataSQL ServerOracleTelco SwitchesMedia Streams
  • 30. MVVMTest FrameworkVisual Studio Team TestLaptop/DesktopAppointmentsTablet/SlateAppointmentsPhoneAppointmentsCode Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Code Behind (XAML.cs/vb)Aggregation of data & services for your presentation logicClass LibrariesViewModel(VM.cs/vbTest API w/VSTTLeverage logic across UIsDesigner parties on XAMLSkin across varied form factorsLaptop/DesktopTablet/Slate w/TouchPhoneModelsServicesJSONRIAEFPOCOXMLRESTWeb ServicesWeb ServicesWCFVehiclesTaxPersonVehicleCalendarPeopleSchedulesShippingOrdersDataSQL ServerOracleTelco SwitchesMedia Streams
  • 32. MVVM EnhancementsSilverlight 5 Binding In Style SettersImplicitDataTemplatesRelativeSource Ancestor BindingsCustom Markup ExtensionsDatabinding DebuggingDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & MediaReduce the need for UI codeHow to reduce code?Enhance DataBinding
  • 33. MVVM EnhancementsBinding In Style SettersImplicitDataTemplatesRelativeSource Ancestor BindingsCustom Markup ExtensionsDatabinding DebuggingDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 34. Binding Style SettersHow do I change styles without shipping new XAML?Can I set the styles in the database?demo
  • 35. Binding Style Setters How It WorksCreate a Class to expose your valuesInstance the Class in your ResourcesBind the value to the instanced resourcenamespaceMyProject.Styles { publicclassMyAppStyles: INotifyPropertyChanged{publicBrushForegroundColor{get{ return _foregroundColor; }set { _foregroundColor = value;NotifyPropertyChanged("ForegroundColor");<ResourceDictionaryxmlns:stylesNS="clr-namespace:MyProject.Styles"><stylesNS:MyAppStyles x:Key=โ€œMyAppStyles"/><StyleTargetType="TextBlock"><Setter Property="Foreground"Value="{BindingForegroundColor}, Source={StaticResourceMyAppStyles}โ€
  • 36. MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSourceAncestor BindingsDatabindingDebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 37. Implicit Data Templates<Application.Resources><ResourceDictionary><DataTemplatex:Key="vehiclesDataTemplate">DataType="models:Vehicle"><Image Source="Vehicle.png"/></DataTemplate> </ResourceDictionary></Application.Resources><Application.Resources> <ResourceDictionary><DataTemplatex:Key="stateDataTemplate">DataType=โ€œmodels:State"><Grid><StackPanel Orientation="Horizontal"><TextBlock Text="{BindingStateCode}"/><TextBlock Text="{BindingStateName}"/></StackPanel></Grid></DataTemplate> </ResourceDictionary></Application.Resources><Application.Resources><ResourceDictionary><!--Default Vehicle DataTemplate--><DataTemplateDataType="models:Vehicle"><Image Source="Vehicle.png"/></DataTemplate><DataTemplateDataType="models:Car"><Image Source="Car.png"/></DataTemplate><DataTemplateDataType="models:Truck"><Image Source="Truck.png"/></DataTemplate><DataTemplateDataType="models:Motorcycle"><Image Source="Motorcycle.png"/></DataTemplate> </ResourceDictionary></Application.Resources><Application.Resources> <ResourceDictionary><DataTemplate x:Key=โ€œStatesDataTemplate"><Grid><StackPanel Orientation="Horizontal"><TextBlock Text="{BindingStateCode}"/><TextBlock Text="{BindingStateName}"/></StackPanel></Grid></DataTemplate> </ResourceDictionary></Application.Resources>Template Based On TypeHeterogeneous CollectionsWith Inheritance Hierarchy demo
  • 38. MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabindingDebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 39. Relative Source Ancestor BindingHow do I bind to data up the visual tree?namespaceSLInsurance.ViewModels{publicclassAppointmentsViewModel{publicObservableCollection<Appointments> Appointments{ get; set; } publicObservableCollection<Status> Status{get; set; }namespaceSLInsurance.Views{publicpartialclassAppointmentView: UserControl {...this.DataContext= newViewModels.AppointmentViewModel();<ListBoxItemsSource="{BindingPath=Appointments}"><ListBox.ItemTemplate><DataTemplate><Grid ... <TextBlockText="{BindingTime}" โ€ฆ <ComboBoxItemsSource="{BindingDataContext.Status,RelativeSource={RelativeSourceFindAncestorAncestorType=UserControl, Mode=FindAncestor}}"
  • 40. Relative Source Ancestor BindingUsed For Control Hierarchy Binding As Well<DataTemplate x:Key="StateComboBoxDataTemplate"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{BindingStateCode}"Margin="0,0,5,0"/> <TextBlock Text="{BindingStateName}"Visibility="{BindingIsDropDownOpen,RelativeSource={RelativeSourceFindAncestorAncestorType=ComboBox}, Converter={StaticResourceBoolToVisibilityConverter}}"/></StackPanel>demo
  • 41. MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 43. DataBinding DebuggingXAML BreakpointsBreak when objects are bound, such as Grid Cycling((System.Windows.Data.Debugging.BindingDebugState)BindingState).Error != nullLocals:Dig into whatโ€™s working, whatโ€™s notFull Debugging SupportBound Instance & TypeValues of the Final SourcePipelineInitial
  • 47. โ€ฆMVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 49. Custom Markup ExtensionsHow do I get my event handler code out of my Code Behind<ListBoxx:Name="appointmentsListbox"ItemsSource="{Binding Appointments}"SelectionChanged="OnAppointmentsListbox_SelectionChanged">UI (XAML)publicpartialclassAppointments: UserControl{privatevoidOnAppointmentsListbox_SelectionChanged(object sender, SelectionChangedEventArgs e){this.DataService.GetClaimById(GetClaimsCallback, ((AdjusterAppointment) (this.appointmentsListbox.SelectedItem)).Claim_Id); }privatevoidGetClaimsCallback(ObservableCollection<Claim> claims) {this.AppoinmentsListBox.Items.Add(claims[0]);Code Behind (XAML.cs/vb)ViewModel(VM.cs/vbServicesModelspublicvoidGetClaimById(Action<ObservableCollection<Claim>> callback, stringclaim_Id) {varquery = DataContext.GetClaimByIdQuery(claim_Id); _getClaimCallback = callback; _claimLoadOperation = DataContext.Load<Claim>(query); โ€ฆData
  • 50. Custom Markup ExtensionHow It WorkspublicclassMethodInvokeExtension: IMarkupExtension<object> { // Properties Exposed in XAML as Intellisense LovepublicStringMethod{ get; set; } // Invoked by the XAML Parser @ runtime publicobjectProvideValue(IServiceProviderserviceProvider) {<UserControl x:Class=โ€œAppointmentsView"xmlns:MyUtils="clr-namespace:SLInsurance;assembly=SLInsurance">...<StackPanel x:Name="LayoutRoot"> <ComboBoxName=โ€œappointmentsListBox"SelectionChanged="{MyUtils:MethodInvoke Method=OnAppointmentChanged}"
  • 51. MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 52. DataContextChanged EventIt just worksIncrease Memory Efficiency โ€œhandle referencesโ€this.DataContextChanged += View_DataContextChanged;โ€ฆvoidView_DataContextChanged(objectsender, DependencyPropertyChangedEventArgs e) {INotifyPropertyChanged customer; customer = e.OldValueasINotifyPropertyChanged;if (customer != null)customer.PropertyChanged -= customer_PropertyChanged; customer = e.NewValueasINotifyPropertyChanged;if (customer != null)customer.PropertyChanged += customer_PropertyChanged;}
  • 53. MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChanged EventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 54. UpdateSourceTriggerHow can I get key stroke changes?<TextBoxName="vinTextBox"Text="{BindingSelectedClaim.InsuredVIN, Mode=TwoWay}"TextChanged="vinTextBox_TextChanged"UI (XAML)privatevoidvinTextBox_TextChanged(object sender, TextChangedEventArgs e) {Helpers.VinCarInfocarInfo = Helpers.VINParser.Parse(vinTextBox.Text);this.vehicleYearsAutoComplete.Text = carInfo.Year.Value.ToString();this.vehicleMakeAutoComplete.Text = carInfo.Make;this.vehicleModelComboBox.SelectedValue = carInfo.Model;Code Behind (XAML.cs/vb)ViewModel(VM.cs/vbpublicvoidLoadVehicleYears() {this.DataService.GetVehicleYears(GetVehicleYearsCallback);}publicvoidLoadVehicleMakes(Nullable<int> year) {if(year.HasValue) {this.DataService.GetVehicleMakes(GetVehicleMakessCallback, year.Value);โ€ฆpublicvoidLoadVehicleModels(Nullable<int> year, string make) {if(year.HasValue) {this.DataService.GetVehicleModels(GetVehicleModelssCallback, year.Value, make);ServicesModelspublicvoidGetVehicleMakes(Action<ObservableCollection<string>> callback, int year) { _getVehicleMakesCallback = callback;this.SearchServiceClient.GetVehicleMakesCompleted += OnGetVehicleMakesCompleted;this.SearchServiceClient.GetVehicleMakesAsync(year);}Data
  • 55. UpdateSourceTriggerMoving code from the UI to the testable ViewModel<TextBoxName="vinTextBox"Text="{BindingSelectedClaim.InsuredVIN, Mode=TwoWay}"UpdateSourceTrigger=PropertyChanged}"UI (XAML)Code Behind (XAML.cs/vb)ViewModel(VM.cs/vbvoidOnClaimPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {switch(e.PropertyName) {case"InsuredVIN":ParseVIN();break;โ€ฆprivate voidParseVIN() {Helpers.VinCarInfocarInfo = Helpers.VINParser.Parse(this.SelectedClaim.InsuredVIN);this.SelectedClaim.InsuredYear= carInfo.Year;this.SelectedClaim.InsuredMake= carInfo.Make;this.SelectedClaim.InsuredModel= carInfo.Model;โ€ฆServicesModelsData
  • 57. MVVM EnhancementsBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & Media
  • 58. WCF RIA Services for Silverlight 5Complex Types (SP1)Custom ClientCode Gen(SP1)EF Code First(coming soon)DateTimeOffsetMVVM Support
  • 59. But Wait, Thereโ€™s MoreBinding In Style SettersImplicit DataTemplatesRelativeSource Ancestor BindingsDatabinding DebuggingCustom Markup ExtensionsDataContextChangedEventUpdateSourceTriggerWCF RIA Services EnhancementsText, Printing & MediaTextPrintingMedia
  • 60. Text EnhancementsCum sociisnatoquepenatibus et magnis dis parturient montes, nasceturridiculus mus. Pellentesque habitant morbitristiquesenectus et netus et malesuada fames ac turpisegestas. Vivamusenim dolor, molestie at auctor id, auctorultrices nisi. Curabitururnalorem, luctushendreritdapibusquis, facilisissedorci. Aliquamnuncmassa, placerat id pretiumeget, luctus sit amet diam. Vestibulum ante ipsumprimis in faucibusorciluctus et ultricesposuerecubiliaCurae; Pellentesquefermentumneque at nislbibendumcursus. Aliquamsollicitudineliteununcplacerat et pulvinarmauriscondimentum. Donecsedsapienelit, velcondimentumjusto. Cum sociisnatoquepenatibus et magnis dis parturient montes, nasceturridiculus mus. Ututodionunc. Maecenas vitae quam urna. Nulla a ante imperdietsemtinciduntporta. Donecesttellus, imperdietegetullamcorpereu, laoreetvellorem. FusceornarenislLinked Text ContainersFlow Rich Text from one container to anotherDynamically flows on resizemollis lacus cursus semper suscipiturnaultricies. Phasellus magna justo, commodosodalesauctornec, euismod vitae purus.Vivamusdignissimfeugiattristique. Crasaliquetsapien non justosagittisimperdiet. In a velitmauris, eusodales magna. Fuscelectuslectus, blandit non semper vitae, cursusutpurus. Vestibulumquisaliquamaugue. Morbiid estseddiamimperdietpretium vitae a turpis. Sedvelsapienarcu. Loremipsum dolor sit amet, consecteturadipiscingelit. Suspendisse ac diamut ante imperdietlacinia. Integer sit ametjusto sit amettortorfacilisis id sit ametaugue. Etiam in risusveleratmolestieviverra. Suspendissepellentesquebibendumsagittis. Etiamconvallisleo at dui ornareegetelementumodio dictum. Integer tempus ultricieslectus. Maecenas dictum ipsum id nisladipiscingeuiaculistortorsuscipit. Etiamsedsapienneque, in ultricies magna. Aliquam in nisl et lectusbibendumvestibulum. Donecsuscipit, velit vitae convallisaccumsan, tortor magna dignissimpurus, sedconvallisorcitortorsed sem. Crasquisest id turpiscongueporta. Proinpharetramattisnullaquisvestibulum.<RichTextBoxOverflowContentTarget="{Binding ElementName=overflow1}"><RichTextBoxOverflow x:Name="overflow1"OverflowContentTarget="{BindingElementName=overflow2}"><RichTextBoxOverflow x:Name="overflow2"OverflowContentTarget="{BindingElementName=overflow3}">...Utin sapien id maurisegestasrhoncus a egeterat. Vivamustempor tempus quam facilisisdapibus. Curabiturvolutpatipsum vitae tortortinciduntsedmalesuadaurnatincidunt. Quisqueporttitor, neque id malesuadafaucibus, quam leoauctornisl, quisaliquetenim ligula utodio. Etiamvelturpis magna. Crasiaculisest sem. Pellentesquemalesuada, liberoeutemportempor, tellusipsumdignissimsapien, id facilisisaugueipsum vitae quam. Crasquisimperdietleo. In orcipurus, placerat ac ultricies in, elementum vitae turpis. Nunclectussapien, sagittis id luctusut, hendreritutmassa. Sedpurussapien, pharetra id faucibusnec, semper id lacus. Phasellus et lectusleo, egetadipiscinglorem. Donecfermentum lacus dolor. Etiamlaoreettristique nisi, sit ametconvallisnunclacinia et. Integer aliquam, magna ac porttitorcongue, estliberoconsectetur lacus, lobortisportaorcirisusnec magna. Integer sapienpurus, volutpat sit ametvehicula vitae, accumsan a felis. Sed a nullavelenimlaoreetconsequat. Nullautnequemassa, at semper enim.risusnec magna. Integer sapienpurus, volutpat sit ametvehicula vitae, accumsan a felis. Sed a nullavelenimlaoreetconsequat. Nullautnequemassa, at semper enim.
  • 61. Text ClaritySharpens text by snapping with pixelsGreat for low res devices
  • 63. Trick PlayWhere did they joke aboutโ€ฆSpeed through videos, search for soundsNew dimension to searchNo โ€œAlvin & The Chipmunksโ€
  • 64. Unrestricted File AccessSL5 trusted apps can access:SL4 trusted apps can access:
  • 66. AgendaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bitPivotViewer
  • 67. Trusted Apps SL4: OOB apps run trusted with user consentSL5: in-browser trusted apps with admin consentSet permissions via group policyNo prompts or installsFamiliar navigation modelCan be part of a larger HTML site
  • 69. Creating a Trusted AppJust like SL4 trusted OOB<OutOfBrowserSettings> <OutOfBrowserSettings.SecuritySettings> <SecuritySettingsElevatedPermissions="Required" /> </OutOfBrowserSettings.SecuritySettings></OutOfBrowserSettings>
  • 70. Creating a Trusted AppSign the .xapSame as for a trusted OOBIn Visual Studio or on command linesigntool.exe sign /v /f nameOfCert.pfx /p "<password>"nameOfApp.xapor
  • 71. AgendaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bitPivotViewer
  • 72. Permissions in Group PolicyActually, only one permission โ€“ trusted or notNetwork admin specifies which publishers are trustedPublishers identified by Authenticode certificatePut certificate in client machineโ€™s trusted publisher storeSame as ClickOnceXaps are associated with publishers by Authenticode
  • 73. AgendaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bitPivotViewer
  • 74. P/InvokeP/Invoke lets you call native codeCOM (SL4) also lets you call native codeAnything you can do with COM can also be done with P/InvokeStrongly typedNo COM registrationP/Invoke is optimized for Win32 APIs & native C/C++ codeCOM is optimized for COM Automation APIs, eg OfficeCOM & P/Invoke are available on Windows to trusted apps
  • 75. P/Invoke Works exactly like it does in .NET Framework[DllImport("kernel32.dll")]staticexternintGetDriveType(stringlpRootPathName);โ€ฆint type = GetDriveType(drive);
  • 76. AgendaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bitPivotViewer
  • 77. Configure SL5 WebBrowser In-BrowserConfigure app to run as out-of-browser trusted app even though it will be in-browserConfigure target computers to allows trusted app in browser:Key path for 32-bit computers: HKEY_LOCAL_MACHINE\Software\Microsoft\Silverlight\Key path for 64-bit computers: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Silverlight\Value name: AllowElevatedTrustAppsInBrowserValue type: DWORDValid Values:Disabled - 0x00000000Enabled - 0x00000001
  • 78. AgendaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bitLots of 3D Stuff
  • 79. Multiple WindowsSystem.Windows.Window is now an instantiable classWindoww = newWindow();w.Height = 400;w.Width = 600;w.Content = new MyUserControl();w.Visibility = Visibility.Visible;
  • 81. AgendaUnrestricted File AccessTrusted Apps In-BrowserGroup PolicyP/InvokeHTML supportMultiple Windows64-bitPivotViewer
  • 82. 64-bit Support64-bit machines & apps are becoming increasingly commonSL5 can run in a 64-bit process64-bit browsersSidebar on 64-bit WindowsWhy 64-bit is interesting:Because you donโ€™t get to choose the browserBecause youโ€™re native hosting in a 64-bit processBecause you need a lot of address space
  • 83. 3D Target applicationsData visualization*3D charts and reportsScatter pointsGeographic overlaysScience & astronomyEducation & trainingMarketing & advertisingBusiness*ManufacturingIndustrial processesHome designRealty & virtual toursCustomer supportMedicalGames & simulation* Enterprise focus for Silverlight 5
  • 85. Silverlight 5 SummaryAdding productivity & robustness withAdvanced styling and templatingDatabinding Enhancements & DebuggingBetter Text & Printing Improved trusted and native interopEnabling Next Gen MediaSilverlight 5 ships second half 2011
  • 86. ResourcesSilverlight.netWCF RIA Services Page: http://silverlight.net/riaservices
  • 87. ยฉ 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Editor's Notes

  • #3: Separation patternSeparates Design/Presentation from Business LogicData binding (XAML)Unit testingSeparation of concernsDesigner and developer symbiosisConsistent patternMaintainable Scalable
  • #29: Add:StringFormatFallBackValueTargetNullValueShow PipelineAdd ConverterShow the converterBreakpoint in the converterLastCompletedStageCanโ€™t step into the different binding stagesCould I set the breakpoint conditional stage to the binding stage?
  • #32: Get w/Mark Harper on various use cases - Try demoing another scenarioHelpers.InvokeExtension
  • #40: Early head start with SP1
  • #41: Chinese