You are previewing Introducing Silverlight 4.
O'Reilly logo
Introducing Silverlight 4

Book Description

Introducing Silverlight 4 brings you up to speed with the latest version of Silverlight quickly and efficiently. The book builds off your understanding of the basics of .NET coding and WPF, allowing your journey to Silverlight 4 proficiency to be as quick and painless as possible. The text highlights where coding techniques are similar to other, more established areas of the .NET framework. Likewise, when your existing coding habits lead you to a syntax or conceptual 'gotcha,' the text points that out, too.

This book provides you with fast-track coverage of all the most important elements of the Silverlight 4 technology ranging from XAML to standard controls, from dealing with media to networking, from testing to deployment. It also reveals the new features introduced with Silverlight 4 and offers guidance on how to best utilize them. The book concludes with a pair of fully worked sample applications for you to follow through, because nothing reinforces your understanding of how concepts fit together as much as looking at finished code.

It is assumed that readers are already be comfortable with the workings of the .NET Framework. Knowledge of Expression Blend is useful, but not mandatory: you'll learn the Blend techniques that you need to know as you go through the book. By the end, you will have followed a sound, concise path to mastery of Silverlight 4.

Table of Contents

  1. Copyright
  2. About the Author
  3. About the Technical Reviewer
  4. Acknowledgments
  5. Introduction
  6. 1. Introduction to Silverlight
    1. 1. Introducing Silverlight
      1. 1.1. Cross-Platform Frameworks
        1. 1.1.1. Qt
        2. 1.1.2. The Java Platform
        3. 1.1.3. Adobe Flash/Flex/AIR
        4. 1.1.4. Microsoft ASP.NET AJAX
        5. 1.1.5. Microsoft Silverlight
      2. 1.2. The History of Silverlight
        1. 1.2.1. Silverlight 1
        2. 1.2.2. Silverlight 2
        3. 1.2.3. Silverlight 3
        4. 1.2.4. Silverlight 4
      3. 1.3. Design and Development Tools for Silverlight
        1. 1.3.1. Visual Studio
        2. 1.3.2. Expression Blend
        3. 1.3.3. SketchFlow
        4. 1.3.4. Expression Encoder
        5. 1.3.5. Deep Zoom Composer
        6. 1.3.6. Eclipse Tools for Silverlight (eclipse4SL)
      4. 1.4. Creating a Silverlight 4-based Application
        1. 1.4.1. Working with Expression Blend
        2. 1.4.2. Demonstrating Local Image Files Integration Using Drag-and-Drop Functionality
      5. 1.5. Summary
    2. 2. Silverlight Concepts
      1. 2.1. Silverlight Architecture
      2. 2.2. Silverlight and XAML
        1. 2.2.1. Developing a Sample Application
          1. 2.2.1.1. Defining User Interface Using XAML Code
          2. 2.2.1.2. Defining User Interface Using Code-Behind
          3. 2.2.1.3. The XAML Controls Structure
        2. 2.2.2. Namespaces
        3. 2.2.3. Dependency Property System
          1. 2.2.3.1. Dependency Properties
            1. 2.2.3.1.1. Attached Properties
          2. 2.2.3.2. The Root of Visual Elements: DependencyObject
        4. 2.2.4. Type Converters
        5. 2.2.5. Markup Extensions
          1. 2.2.5.1. Resource Dictionaries, Referencing Static Resources, and Implicit Styling
            1. 2.2.5.1.1. Static Resource Dictionary
            2. 2.2.5.1.2. Merged Resource Dictionary
            3. 2.2.5.1.3. Implicit Styling
          2. 2.2.5.2. Data Binding
            1. 2.2.5.2.1. RelativeSource Markup Extension
          3. 2.2.5.3. Template Binding
      3. 2.3. Microsoft .NET for Silverlight
        1. 2.3.1. Core .NET Assemblies for Silverlight Applications
        2. 2.3.2. Managed Code-Behind .NET Integration
          1. 2.3.2.1.
            1. 2.3.2.1.1. Application and MainPage Classes
            2. 2.3.2.1.2. Events in Silverlight
      4. 2.4. Summary
    3. 3. Silverlight User Interface Controls
      1. 3.1. Building Blocks
        1. 3.1.1. DependencyObject
        2. 3.1.2. Threading and the user interface
        3. 3.1.3. UIElement
        4. 3.1.4. FrameworkElement
        5. 3.1.5. The Control Class
      2. 3.2. Enhancements in Silverlight 4
      3. 3.3. Layout Management and Grouping Controls
        1. 3.3.1. Canvas
        2. 3.3.2. StackPanel
        3. 3.3.3. Grid
        4. 3.3.4. DockPanel
        5. 3.3.5. WrapPanel
        6. 3.3.6. TabControl
        7. 3.3.7. ViewBox
      4. 3.4. Forms Controls
        1. 3.4.1. The Button Controls
          1. 3.4.1.1. Button
          2. 3.4.1.2. HyperlinkButton
          3. 3.4.1.3. RepeatButton
          4. 3.4.1.4. Toggle Buttons: CheckBox and RadioButton
        2. 3.4.2. TextBox
        3. 3.4.3. PasswordBox
        4. 3.4.4. RichTextBox
        5. 3.4.5. AutoCompleteBox
      5. 3.5. Data Integration and Data Manipulation Controls
        1. 3.5.1. ItemsControl
        2. 3.5.2. ListBox
          1. 3.5.2.1. The ListBoxItem Class
        3. 3.5.3. ComboBox
          1. 3.5.3.1. The ComboBoxItem Class
        4. 3.5.4. TreeView
          1. 3.5.4.1. The TreeViewItem Class
        5. 3.5.5. HeaderedItemsControl
        6. 3.5.6. ContentControl
        7. 3.5.7. HeaderedContentControl
        8. 3.5.8. DataGrid
        9. 3.5.9. DataForm
        10. 3.5.10. DataPager
        11. 3.5.11. Label
        12. 3.5.12. DescriptionViewer
        13. 3.5.13. ValidationSummary
      6. 3.6. Functional Controls
        1. 3.6.1. Border
        2. 3.6.2. GridSplitter
        3. 3.6.3. TextBlock
        4. 3.6.4. Popup
        5. 3.6.5. ToolTipService
        6. 3.6.6. ScrollViewer
        7. 3.6.7. The RangeBase Class
          1. 3.6.7.1. ScrollBar
          2. 3.6.7.2. Slider
          3. 3.6.7.3. ProgressBar
        8. 3.6.8. Calendar and DatePicker
        9. 3.6.9. Image
        10. 3.6.10. MultiScaleImage
        11. 3.6.11. MediaElement
        12. 3.6.12. InkPresenter
          1. 3.6.12.1. Strokes and StylePoints
        13. 3.6.13. Dialog Boxes
          1. 3.6.13.1. OpenFileDialog
          2. 3.6.13.2. SaveFileDialog
          3. 3.6.13.3. ChildWindow
        14. 3.6.14. WebBrowser
      7. 3.7. Navigation
        1. 3.7.1.
          1. 3.7.1.1. The Frame Class
          2. 3.7.1.2. The Page Class
      8. 3.8. Summary
  7. 2. Content Integration in Silverlight Applications
    1. 4. Media Integration
      1. 4.1. Media Integration Enhancements in Silverlight 4
      2. 4.2. Images
        1. 4.2.1. The Image Class
        2. 4.2.2. Bitmap APIs
        3. 4.2.3. Silverlight Hardware Acceleration
          1. 4.2.3.1. GPU Hardware Acceleration
          2. 4.2.3.2. Bitmap Caching
          3. 4.2.3.3. Cache and Frame Rate Counter Visualization
        4. 4.2.4. Multi-scale Images and the Deep Zoom Feature
          1. 4.2.4.1. Developing an Example Using Deep Zoom Composer
      3. 4.3. Media (Video and Audio)
        1. 4.3.1. Supported Media Format
        2. 4.3.2. Unsupported Media Format
        3. 4.3.3. The MediaElement Class
        4. 4.3.4. Timeline Markers
        5. 4.3.5. Web Camera and Microphone Integration
          1. 4.3.5.1. The CaptureDeviceConfiguration Class
          2. 4.3.5.2. The CaptureDevice, AudioCaptureDevice, and VideoCaptureDevice Classes
          3. 4.3.5.3. The CaptureSource Class
          4. 4.3.5.4. Developing an Example
      4. 4.4. Windows Azure Platform-based Hosting and Media Delivery Services for Silverlight Applications
        1. 4.4.1. Subscribing to Windows Azure Platform Services
        2. 4.4.2. Publishing Silverlight Applications Video Content
      5. 4.5. Streaming Packaged Images and Media Files
      6. 4.6. Summary
    2. 5. Network Communication
      1. 5.1. Networking Enhancements in Silverlight 4
      2. 5.2. Enabling Cross-Domain Communication
        1. 5.2.1. Cross-Domain Policy Files
          1. 5.2.1.1. The crossdomain.xml File
          2. 5.2.1.2. The clientaccesspolicy.xml File
        2. 5.2.2. Trusted Applications
      3. 5.3. Network-Aware Applications
      4. 5.4. Consuming Web Services with WCF
        1. 5.4.1. Creating a WCF Service Consumable by Silverlight
        2. 5.4.2. XAML to Consume Information
        3. 5.4.3. Invoking Services from Silverlight
          1. 5.4.3.1. Silverlight Service Utility Tool
          2. 5.4.3.2. Asynchronous Communication
          3. 5.4.3.3. Handling Errors
        4. 5.4.4. Communicating Directly over HTTP
          1. 5.4.4.1. The WebClient Class
          2. 5.4.4.2. The HttpWebRequest Class
      5. 5.5. Communicating via Sockets
        1. 5.5.1. Controlling Client Access via a Socket Policy Server
        2. 5.5.2. The System.Net Namespace
          1. 5.5.2.1. The Socket Class
          2. 5.5.2.2. The SocketAsyncEventArgs Class
        3. 5.5.3. Building a Socket-Based Sample Text Chat Application
          1. 5.5.3.1. The PolicyServer Windows Service Project
            1. 5.5.3.1.1. The SocketPolicyServer Class
            2. 5.5.3.1.2. The SocketPolicyConnection Class
            3. 5.5.3.1.3. The SocketClientAccessPolicy.xml Policy File
          2. 5.5.3.2. The MessengerServer Windows Service Project
            1. 5.5.3.2.1. The MessengerServer Class
            2. 5.5.3.2.2. The MessengerConnection Class
          3. 5.5.3.3. The Message.cs File
          4. 5.5.3.4. The MainPage.xaml File
          5. 5.5.3.5. The MainPage.xaml.cs Code-Behind File
          6. 5.5.3.6. Executing the Text Chat Application
      6. 5.6. UDP Multicast
        1. 5.6.1. The UdpAnySourceMulticastClient Class
        2. 5.6.2. The UdpSingleSourceMulticastClient Class
      7. 5.7. Considerations for Using Networking
      8. 5.8. Summary
    3. 6. Working with Data
      1. 6.1. Enhancements in Silverlight 4
      2. 6.2. Displaying Data
        1. 6.2.1. Data Binding
          1. 6.2.1.1. Enabling Data Change Notification
          2. 6.2.1.2. Rich Data Binding Support in Visual Studio 2010
          3. 6.2.1.3. Data Validation
            1. 6.2.1.3.1. Binding.ValidatesOnExceptions Property
            2. 6.2.1.3.2. Binding.NotifyOnValidationError Property and FrameworkElement.BindingValidationError Event
          4. 6.2.1.4. IDataErrorInfo Interface for Client-Side Validation
          5. 6.2.1.5. INotifyDataErrorInfo Interface for Asynchronous Server-Side Validation
            1. 6.2.1.5.1. Developing an ASP .NET Validation Web Service
            2. 6.2.1.5.2. Adding Consultant.cs Class to Implement INotifyDataErrorInfo Interface
            3. 6.2.1.5.3. AsyncValidationDemo.xaml and Code-Behind
          6. 6.2.1.6. XAML Element Data Binding / Element-to-Element Binding
          7. 6.2.1.7. DependencyObject Binding
        2. 6.2.2. Type Converters
        3. 6.2.3. StringFormat
        4. 6.2.4. BindingBase.FallbackValue and BindingBase.TargetNullValue Properties
        5. 6.2.5. Binding to String Indexers
        6. 6.2.6. The DataGrid Control
          1. 6.2.6.1. Implementing Grouping, Sorting, Filtering, and Paging
            1. 6.2.6.1.1. Grouping
            2. 6.2.6.1.2. Sorting
            3. 6.2.6.1.3. Filtering
            4. 6.2.6.1.4. Paging using the DataPager Control
          2. 6.2.6.2. DataGrid Editing Events
          3. 6.2.6.3. DataGrid Column Sizing
          4. 6.2.6.4. Clipboard Support
          5. 6.2.6.5. Cell-Level Data Validation
          6. 6.2.6.6. Row-Level Data Validation
        7. 6.2.7. The DataForm Control
          1. 6.2.7.1. IEditableObject Interface Implementation
          2. 6.2.7.2. Customized Display of DataForm Fields
          3. 6.2.7.3. Field-Level Validation
        8. 6.2.8. The CollectionViewSource
      3. 6.3. WCF Data Services
        1. 6.3.1. Entity Data Model (EDM)
        2. 6.3.2. Silverlight Client Library for WCF Data Services
          1. 6.3.2.1. The DataServiceContext Class
          2. 6.3.2.2. The DataServiceQuery Class
          3. 6.3.2.3. The DataServiceCollection (T) Class
        3. 6.3.3. Silverlight Application using WCF Data Service
          1. 6.3.3.1. Create ADO .NET Entity Data Model
          2. 6.3.3.2. Create WCF Data Service
          3. 6.3.3.3. Create WCF Data Services Proxy and Retrieve the Records
          4. 6.3.3.4. Two-Way Binding with DataServiceCollection Class
          5. 6.3.3.5. Handling Deferred Content
            1. 6.3.3.5.1. Eager Loading
            2. 6.3.3.5.2. On-Demand Loading (Lazy Loading)
      4. 6.4. Processing XML Data
        1. 6.4.1. Parsing XML
        2. 6.4.2. Serializing XML
        3. 6.4.3. Using LINQ
      5. 6.5. Saving State on the Client
      6. 6.6. Summary
  8. 3. Improving User Experience
    1. 7. Extending User Experience of LoB Applications
      1. 7.1. Enhancements in Silverlight 4
      2. 7.2. Drag-and-Drop Functionality
        1. 7.2.1. Properties of UIElement to Enable Drag-and-Drop Functionality
        2. 7.2.2. Events of UIElement to Enable Drag-and-Drop Functionality
        3. 7.2.3. Processing Dropped File(s)
        4. 7.2.4. Developing an Example
          1. 7.2.4.1. Defining User Control
          2. 7.2.4.2. Implementing Code-Behind of the User Control
          3. 7.2.4.3. Adding ChildWindow as an Image Viewer
      3. 7.3. Mouse-Wheel Support
        1. 7.3.1. Developing an Example
        2. 7.3.2. Limitations
      4. 7.4. Right-Click Context Menu Support
      5. 7.5. Printing Capabilities
        1. 7.5.1. PrintDocument Class
        2. 7.5.2. PrintPageEventArgs Class
        3. 7.5.3. Implementing the Printing Function
          1. 7.5.3.1. Printing the Application Screen
          2. 7.5.3.2. Printing Selected Control
          3. 7.5.3.3. Custom Printing
      6. 7.6. Clipboard Access
      7. 7.7. Globalization and Localization of Silverlight Applications
        1. 7.7.1. Globalization
          1. 7.7.1.1. CultureInfo Class
          2. 7.7.1.2. Developing an Example
        2. 7.7.2. Localization
          1. 7.7.2.1. Hub-and-Spoke Model
          2. 7.7.2.2. Implementing an Example
            1. 7.7.2.2.1. Adding Culture-Specific Resource Files
            2. 7.7.2.2.2. Adding Helper Class to Support Dynamic Culture-Specific Change in User Interface
            3. 7.7.2.2.3. Bind XAML Controls with Culture-Specific Resource Files
            4. 7.7.2.2.4. Making the Project Aware of Localization Capabilities
          3. 7.7.2.3. Preparing for Global Silverlight Application
      8. 7.8. Enhancements in XAML Features
        1. 7.8.1. Flexible Root XAML Namespace
        2. 7.8.2. XmlnsDefinitionAttribute
        3. 7.8.3. Direct Content
        4. 7.8.4. Whitespace Handling
        5. 7.8.5. Custom IDictionary Support
      9. 7.9. Summary
    2. 8. Styling and Templating
      1. 8.1. Enhancements in Silverlight 4
      2. 8.2. Using Styles
        1. 8.2.1. Style Inheritance/Style Cascading
        2. 8.2.2. Style Override/Style Resetting
        3. 8.2.3. Merged Resource Dictionaries
        4. 8.2.4. Implicit Styling
        5. 8.2.5. Style Setter
      3. 8.3. Using Control Templates
        1. 8.3.1. Creating a Control Template
          1. 8.3.1.1. Visual State Manager (VSM)
          2. 8.3.1.2. Custom Button Control using Control Template
        2. 8.3.2. Control Templates for Other Controls
        3. 8.3.3. Developing a Templated Control
      4. 8.4. Summary
    3. 9. Graphics
      1. 9.1. Enhancements in Silverlight 4
      2. 9.2. 2D Graphics
        1. 9.2.1. Using Geometries
          1. 9.2.1.1. Simple Geometries
            1. 9.2.1.1.1. LineGeometry
            2. 9.2.1.1.2. RectangleGeometry
            3. 9.2.1.1.3. EllipseGeometry
          2. 9.2.1.2. Path Geometries
            1. 9.2.1.2.1. ArcSegment
            2. 9.2.1.2.2. BezierSegment
            3. 9.2.1.2.3. LineSegment
            4. 9.2.1.2.4. QuadraticBezierSegment
            5. 9.2.1.2.5. PolyBezierSegment
            6. 9.2.1.2.6. PolyLineSegment
            7. 9.2.1.2.7. PolyQuadraticBezierSegment
          3. 9.2.1.3. Grouping Geometries
          4. 9.2.1.4. Clipping with Geometries
        2. 9.2.2. Using Shapes
          1. 9.2.2.1. Ellipse
          2. 9.2.2.2. Line
          3. 9.2.2.3. Rectangle
          4. 9.2.2.4. Polyline
          5. 9.2.2.5. Polygon
          6. 9.2.2.6. Path
      3. 9.3. Transforms
        1. 9.3.1. Translation
        2. 9.3.2. Rotation
        3. 9.3.3. Skewing
        4. 9.3.4. Scaling
        5. 9.3.5. Arbitrary Linear Transforms
        6. 9.3.6. Combining Multiple Transformations
        7. 9.3.7. Composite Transformation
      4. 9.4. 3D Effects Using Perspective Transforms
      5. 9.5. Pixel Shaders
      6. 9.6. Brushes
        1. 9.6.1. The SolidColorBrush
        2. 9.6.2. The Tile Brushes
          1. 9.6.2.1. The ImageBrush
          2. 9.6.2.2. The Video Brush
        3. 9.6.3. The Gradient Brushes
          1. 9.6.3.1. The LinearGradientBrush
          2. 9.6.3.2. The RadialGradientBrush
      7. 9.7. Transparency and Opacity Masks
      8. 9.8. Summary
    4. 10. Animation
      1. 10.1. Introduction to Silverlight Animation
      2. 10.2. Timelines
        1. 10.2.1.
          1. 10.2.1.1. AutoReverse
          2. 10.2.1.2. BeginTime
          3. 10.2.1.3. Duration
          4. 10.2.1.4. FillBehavior
          5. 10.2.1.5. RepeatBehavior
          6. 10.2.1.6. SpeedRatio
      3. 10.3. Storyboards and Animation
        1. 10.3.1. From/To/By Animations
          1. 10.3.1.1. Foreground Animation: An Example
          2. 10.3.1.2. Shimmering Effect for Background Animation: An Example
        2. 10.3.2. Keyframe Animations
          1. 10.3.2.1. Interpolation
            1. 10.3.2.1.1. Linear Interpolation
            2. 10.3.2.1.2. Discrete Interpolation
            3. 10.3.2.1.3. Spline Interpolation
        3. 10.3.3. Animation Easing
          1. 10.3.3.1. Understanding Animation-Easing Functions
      4. 10.4. Procedural Animation
        1. 10.4.1. Bubble User Control
        2. 10.4.2. DemoPage User Control
      5. 10.5. Animating with Expression Blend
      6. 10.6. 3D Animation
      7. 10.7. Summary
  9. 4. Advanced Topics
    1. 11. Advanced Silverlight Features
      1. 11.1. Silverlight Navigation Framework
        1. 11.1.1. Understanding the Navigation Framework
          1. 11.1.1.1. The Frame Class
          2. 11.1.1.2. Start-Up Page and Application Navigation Features
            1. 11.1.1.2.1. Navigation to Pages
            2. 11.1.1.2.2. User-Friendly URIs
          3. 11.1.1.3. Navigation Pages
          4. 11.1.1.4. Navigation History and Integration with Browser
        2. 11.1.2. Implementing Custom Navigation
          1. 11.1.2.1. The INavigationContentLoader Interface
            1. 11.1.2.1.1. The BeginLoad Method
            2. 11.1.2.1.2. The CancelLoad Method
            3. 11.1.2.1.3. The CanLoad Method
            4. 11.1.2.1.4. The EndLoad Method
            5. 11.1.2.1.5. Summarizing How to Use the INavigationContentLoader Interface
          2. 11.1.2.2. Extending the Example
            1. 11.1.2.2.1. The AuthLoaderAsyncResult Class
            2. 11.1.2.2.2. The CustomAuthContentLoader Class
      2. 11.2. Deep Linking
      3. 11.3. Search Engine Optimization
        1. 11.3.1. Additional References
      4. 11.4. Out-of-Browser Functionality
        1. 11.4.1. Enabling the Out-of-Browser Functionality
        2. 11.4.2. Installing Out-of-Browser Applications
          1. 11.4.2.1. In-Browser Install: Default Option
          2. 11.4.2.2. In-Browser Install: Custom Developed Option
          3. 11.4.2.3. Silent Install
        3. 11.4.3. Uninstalling Out-of-Browser Applications
          1. 11.4.3.1. The Default Option
          2. 11.4.3.2. The Silent Uninstall Option
        4. 11.4.4. Trusted Out-of-Browser Applications
        5. 11.4.5. Customizing Out-of-Browser Applications
          1. 11.4.5.1. Custom Icons
          2. 11.4.5.2. Window Manipulation and Customization
        6. 11.4.6. Working with the Networking and Offline APIs
        7. 11.4.7. Incorporating an Updated Version
        8. 11.4.8. Files Management
        9. 11.4.9. Notification API
        10. 11.4.10. COM Automation
      5. 11.5. Commanding Support
        1. 11.5.1. The Model Class
        2. 11.5.2. The ViewModel Class
        3. 11.5.3. The View.xaml File
      6. 11.6. Cross-Silverlight Application Communication
        1. 11.6.1. Using the System.Windows.Messaging Namespace
        2. 11.6.2. Seeing an Example in Action
          1. 11.6.2.1. Creating the Sender Silverlight Application
          2. 11.6.2.2. Creating the Receiver Silverlight Application
          3. 11.6.2.3. Hosting the Sender and Receiver Applications on the Same Page
      7. 11.7. Summary
    2. 12. Threading in Silverlight
      1. 12.1. Using Threading
        1. 12.1.1. The Thread Class
        2. 12.1.2. Creating and Managing Threads
        3. 12.1.3. The Dispatcher
        4. 12.1.4. The BackgroundWorker Class
        5. 12.1.5. Working with Shared Data
      2. 12.2. Using Timers
        1. 12.2.1. Using the DispatcherTimer
        2. 12.2.2. Using the System.Threading Timer
      3. 12.3. Summary
    3. 13. WCF RIA Services and Silverlight for Mobile
      1. 13.1. WCF RIA Services for Silverlight
        1. 13.1.1. Setting Up a Development Environment
        2. 13.1.2. Introducing Silverlight Business Application Template
          1. 13.1.2.1. Running the Default Project
          2. 13.1.2.2. Implementing Windows Authentication
          3. 13.1.2.3. ADO .NET Entity Data Model for Data Integration
          4. 13.1.2.4. Domain Service Class for Data Integration
          5. 13.1.2.5. Reading and Displaying Data from the Data Source
          6. 13.1.2.6. Updating Data to the Data Source
        3. 13.1.3. Additional References
      2. 13.2. Silverlight for Windows Mobile
        1. 13.2.1. Setting Up a Development Environment
        2. 13.2.2. Developing a Sample Twitter Application
          1. 13.2.2.1. Create a Windows Phone Application Project
          2. 13.2.2.2. Defining the User Interface
          3. 13.2.2.3. Code-Behind for Twitter Integration
          4. 13.2.2.4. Testing Silverlight Windows Mobile Application Using Windows Phone 7 Emulator
      3. 13.3. Summary
    4. 14. Dynamic Languages and Dynamic .NET for Silverlight
      1. 14.1. Dynamic Languages
      2. 14.2. Dynamic Languages for Silverlight
        1. 14.2.1. IronRuby
        2. 14.2.2. IronPython
      3. 14.3. Dynamic Language Runtime (DLR) for Silverlight
        1. 14.3.1. DLR Scripting Assemblies
        2. 14.3.2. The Microsoft.Scripting.Silverlight.DynamicApplication Class
      4. 14.4. Setting Up the Development Environment
        1. 14.4.1. The Traditional Approach with the Chiron.exe File
        2. 14.4.2. The "Just-Text" Approach
      5. 14.5. Creating Silverlight Applications Using the "Just-Text" Approach
        1. 14.5.1. Hosting a HTML File
        2. 14.5.2. In-Line IronRuby/IronPython Code in Hosting HTML File
        3. 14.5.3. In-Line XAML Code in Hosting HTML File
        4. 14.5.4. Externalizing XAML and IronRuby/IronPython Code
      6. 14.6. Developing an Interactive Bing Maps Application with Silverlight and IronRuby
        1. 14.6.1. Installing Microsoft Bing Maps Silverlight Control SDK
        2. 14.6.2. Include Bing Maps Control to the Solution
          1. 14.6.6.1. Include Bing Maps Control within the dlr.xap File
          2. 14.6.6.2. Include Bing Maps Control As an External ZIP File
        3. 14.6.3. Create a SilverlightMap.xaml File
        4. 14.6.4. Creating a SilverlightMap.html File
        5. 14.6.5. Adding 3D Animation within the SilverlightMap.xaml File
        6. 14.6.6. Creating a SilverlightMap.rb IronRuby File and Adding Map Mode
        7. 14.6.7. Add Rotate Map Capabilities
        8. 14.6.8. Targeting Pre-defined Locations
      7. 14.7. Summary
    5. 15. Security
      1. 15.1. .NET Security in the CLR
      2. 15.2. Silverlight Security Model
      3. 15.3. Enhancements in Silverlight 4
        1. 15.3.1. Configuring Silverlight 4 Applications to Run with Elevated Trust
        2. 15.3.2. Digitally Signing Out-of-Browser Silverlight Applications
        3. 15.3.3. Elevated-Trusted Silverlight Applications vs. Partially Trusted Silverlight Applications
      4. 15.4. Application-Level Security
        1. 15.4.1. Securing Information in Transit
        2. 15.4.2. Securing Information with Cryptography
          1. 15.4.2.1. Hash Algorithms and Message Authentication Codes
          2. 15.4.2.2. Encrypting/Decrypting Data
          3. 15.4.2.3. User Access Control
            1. 15.4.2.3.1. Using the Authentication Service
            2. 15.4.2.3.2. Using the RoleService
            3. 15.4.2.3.3. Authentication Support with ClientHttpWebRequest
        3. 15.4.3. Same-Domain and Cross-Domain Communication
        4. 15.4.4. Division of Responsibility
      5. 15.5. Summary
  10. 5. Testing and Deploying Silverlight RIAs
    1. 16. Testing and Debugging
      1. 16.1. Testing
        1. 16.1.1. Unit Testing
          1. 16.1.1.1. Silverlight Unit Testing Framework
            1. 16.1.1.1.1. In-browser Unit Testing from Visual Studio 2010
            2. 16.1.1.1.2. Unit Testing from Visual Studio 2010 Command Prompt using MSBuild
            3. 16.1.1.1.3. Assert Class
        2. 16.1.2. Automated User Interface Testing
          1. 16.1.2.1. UI Spy Tool
          2. 16.1.2.2. Implementing UI Automation Testing
      2. 16.2. Debugging
        1. 16.2.1. The Debugging Process
        2. 16.2.2. Conditional Compilation
        3. 16.2.3. Debugging Silverlight Applications with Visual Studio
          1. 16.2.3.1. Controlling the Debugger
          2. 16.2.3.2. Configuring Startup for Debugging
          3. 16.2.3.3. Debugging Out-of-Browser Applications
        4. 16.2.4. Handling Unhandled Exceptions
      3. 16.3. Summary
    2. 17. Packaging and Deploying Silverlight Applications
      1. 17.1. Client Considerations
        1. 17.1.1. Disabling Silverlight Plug-In Using Web Browser
        2. 17.1.2. Silverlight Configuration
      2. 17.2. Silverlight Deployment Package Definition
        1. 17.2.1. Core Runtime Library
        2. 17.2.2. Silverlight Application Package (XAP File)
          1. 17.2.2.1. Application Manifest File
          2. 17.2.2.2. Application Startup Assembly File
          3. 17.2.2.3. Optional Files
        3. 17.2.3. In-Package and On-Demand Files
          1. 17.2.3.1. Copy Local Property
          2. 17.2.3.2. Build Action Property
            1. 17.2.3.2.1. Build Action As Content
            2. 17.2.3.2.2. Build Action As None with the Copy to Output Directory Property Set Relatively
            3. 17.2.3.2.3. Build Action As Resource
      3. 17.3. Hosting Silverlight Applications
        1. 17.3.1. Server-Side Silverlight RIA Deployment
          1. 17.3.1.1. Setting the IIS MIME Type
          2. 17.3.1.2. Same-Domain and Cross-Domain Deployment
            1. 17.3.1.2.1. Using the Policy Files
        2. 17.3.2. Custom Initialization Parameters
        3. 17.3.3. Embedding Silverlight Plug-Ins to the Web Page
          1. 17.3.3.1. HTML object Element
          2. 17.3.3.2. Silverlight.js JavaScript Helper File
        4. 17.3.4. Custom HTML Object Element Error Handlingfor Better User Experience
      4. 17.4. Silverlight and the Build Process
        1. 17.4.1. Building a Silverlight Application Visual Studio Project (.csproj) with MSBuild
        2. 17.4.2. Building a Silverlight Application MsBuild Project(.proj) with MSBuild
      5. 17.5. Silent Installer for Silverlight Out-of-Browser Applications
      6. 17.6. Summary