29. Layers Of Our Applications Presentation logic UI (XAML) UI (XAML) Orders UI (XAML) People Appointments Code Behind (XAML.cs/vb) Code Behind (XAML.cs/vb) Code Behind (XAML.cs/vb) Not reusable How to test? How to reuse? How can the designer update the UI How to provide different views Laptop/Desktop Tablet/Slate w/Touch Phone Models Services JSON RIA EF POCO XML REST Web Services Web Services WCF Vehicles Tax Person Vehicle Calendar People Schedules Shipping Orders Data SQL Server Oracle Telco Switches Media Streams
30. MVVM Test Framework Visual Studio Team Test Laptop/Desktop Appointments Tablet/Slate Appointments Phone Appointments Code Behind (XAML.cs/vb) Code Behind (XAML.cs/vb) Code Behind (XAML.cs/vb) Aggregation of data & services for your presentation logic Class Libraries ViewModel(VM.cs/vb Test API w/VSTT Leverage logic across UIs Designer parties on XAML Skin across varied form factors Laptop/Desktop Tablet/Slate w/Touch Phone Models Services JSON RIA EF POCO XML REST Web Services Web Services WCF Vehicles Tax Person Vehicle Calendar People Schedules Shipping Orders Data SQL Server Oracle Telco Switches Media Streams
34. Binding Style Setters How do I change styles without shipping new XAML? Can I set the styles in the database? demo
35. Binding Style Setters How It Works Create a Class to expose your values Instance the Class in your Resources Bind the value to the instanced resource namespaceMyProject.Styles { publicclassMyAppStyles: INotifyPropertyChanged{ publicBrushForegroundColor{ get{ return _foregroundColor; } set { _foregroundColor = value; NotifyPropertyChanged("ForegroundColor"); <ResourceDictionary xmlns:stylesNS="clr-namespace:MyProject.Styles"> <stylesNS:MyAppStyles x:Key=“MyAppStyles"/> <StyleTargetType="TextBlock"> <Setter Property="Foreground" Value="{BindingForegroundColor}, Source={StaticResourceMyAppStyles}”
58. WCF RIA Services for Silverlight 5 Complex Types (SP1) Custom Client Code Gen(SP1) EF Code First (coming soon) DateTimeOffset MVVM Support
59. But Wait, There’s More Binding In Style Setters Implicit DataTemplates RelativeSource Ancestor Bindings Databinding Debugging Custom Markup Extensions DataContextChangedEvent UpdateSourceTrigger WCF RIA Services Enhancements Text, Printing & Media Text Printing Media
60. Text Enhancements Cum 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. Fusceornarenisl Linked Text Containers Flow Rich Text from one container to another Dynamically flows on resize mollis 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 amettortor facilisis 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. <RichTextBox OverflowContentTarget="{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, eget adipiscinglorem. 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.
66. Agenda Unrestricted File Access Trusted Apps In-Browser Group Policy P/Invoke HTML support Multiple Windows 64-bit PivotViewer
67. Trusted Apps SL4: OOB apps run trusted with user consent SL5: in-browser trusted apps with admin consent Set permissions via group policy No prompts or installs Familiar navigation model Can be part of a larger HTML site
69. Creating a Trusted App Just like SL4 trusted OOB <OutOfBrowserSettings> <OutOfBrowserSettings.SecuritySettings> <SecuritySettingsElevatedPermissions="Required" /> </OutOfBrowserSettings.SecuritySettings> </OutOfBrowserSettings>
70. Creating a Trusted App Sign the .xap Same as for a trusted OOB In Visual Studio or on command line signtool.exe sign /v /f nameOfCert.pfx /p "<password>" nameOfApp.xap or
71. Agenda Unrestricted File Access Trusted Apps In-Browser Group Policy P/Invoke HTML support Multiple Windows 64-bit PivotViewer
72. Permissions in Group Policy Actually, only one permission – trusted or not Network admin specifies which publishers are trusted Publishers identified by Authenticode certificate Put certificate in client machine’s trusted publisher store Same as ClickOnce Xaps are associated with publishers by Authenticode
73. Agenda Unrestricted File Access Trusted Apps In-Browser Group Policy P/Invoke HTML support Multiple Windows 64-bit PivotViewer
74. P/Invoke P/Invoke lets you call native code COM (SL4) also lets you call native code Anything you can do with COM can also be done with P/Invoke Strongly typed No COM registration P/Invoke is optimized for Win32 APIs & native C/C++ code COM is optimized for COM Automation APIs, eg Office COM & 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. Agenda Unrestricted File Access Trusted Apps In-Browser Group Policy P/Invoke HTML support Multiple Windows 64-bit PivotViewer
77. Configure SL5 WebBrowser In-Browser Configure app to run as out-of-browser trusted app even though it will be in-browser Configure target computers to allows trusted app in browser: Key path for 32-bit computers: HKEY_LOCAL_MACHINEoftwareicrosoftilverlightbr />Key path for 64-bit computers: HKEY_LOCAL_MACHINEoftwareow6432Nodeicrosoftilverlightbr />Value name: AllowElevatedTrustAppsInBrowser Value type: DWORD Valid Values: Disabled - 0x00000000 Enabled - 0x00000001
78. Agenda Unrestricted File Access Trusted Apps In-Browser Group Policy P/Invoke HTML support Multiple Windows 64-bit Lots of 3D Stuff
79. Multiple Windows System.Windows.Window is now an instantiable class Windoww = newWindow(); w.Height = 400; w.Width = 600; w.Content = new MyUserControl(); w.Visibility = Visibility.Visible;
81. Agenda Unrestricted File Access Trusted Apps In-Browser Group Policy P/Invoke HTML support Multiple Windows 64-bit PivotViewer
82. 64-bit Support 64-bit machines & apps are becoming increasingly common SL5 can run in a 64-bit process 64-bit browsers Sidebar on 64-bit Windows Why 64-bit is interesting: Because you don’t get to choose the browser Because you’re native hosting in a 64-bit process Because you need a lot of address space
83. 3D Target applications Data visualization* 3D charts and reports Scatter points Geographic overlays Science & astronomy Education & training Marketing & advertising Business* Manufacturing Industrial processes Home design Realty & virtual tours Customer support Medical Games & simulation * Enterprise focus for Silverlight 5
85. Silverlight 5 Summary Adding productivity & robustness with Advanced styling and templating Databinding Enhancements & Debugging Better Text & Printing Improved trusted and native interop Enabling Next Gen Media Silverlight 5 ships second half 2011
Separation patternSeparates Design/Presentation from Business LogicData binding (XAML)Unit testingSeparation of concernsDesigner and developer symbiosisConsistent patternMaintainable Scalable
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?
Get w/Mark Harper on various use cases - Try demoing another scenarioHelpers.InvokeExtension