Introducing the March 2005 CTP: What's New in "Avalon"

 

Karsten Januszewski
Microsoft Corporation

March 2005

Applies to:
   March 2005 WinFX SDK Community Technical Preview (CTP)
   February 2005 CTP release of .NET Framework 2.0

Note   The March 2005 Community Technology Preview of Avalon and Indigo is available for download by MSDN Subscribers under Tools, SDKs, DDKs | Platform Tools | WinFX SDK. At a future date, the March CTP will be available for the public at large. 

Summary: In March 2005, Microsoft released a Community Technology Preview of "Avalon," the new presentation subsystem for Windows that unifies development of documents, graphics, and applications into a common platform. In this article, we'll take a brief look at some of the new features that are part of the March CTP as well as the changes that have been made to "Avalon" since the November 2004 CTP. (24 printed pages)

Download the sample code that accompanies this article: AvalonMarchCTPWhatsNew.msi.

Contents

Introduction to "Avalon"
Avalon March 2005 Community Technical Preview
    Note on Community Technology Previews
    Installing "Avalon"
WinFX SDK
Exploring the New Features
    Visual Brush
    Rotation3D
    Event Triggers
    New Controls
    New Tool: XAMLPad
    The SDK Threading Model
Significant Changes
    XAML Changes
    Layout
    Animation and Timing
    Loose XAML
    Changeable Becomes Freezable
What's Missing From This Release
Appendix
    New Types
    Removed Types

Introduction to "Avalon"

"Avalon" is the code name for Microsoft's unified presentation subsystem for Windows. It consists of a display engine and a managed-code framework. "Avalon" unifies how Windows creates, displays, and manipulates documents, media, and user interfaces, which enables developers and designers to create visually stunning, differentiated user experiences that improve customer connection.

  • The "Avalon" Engine. The "Avalon" engine unifies the way developers and designers experience documents, media, and user interface (UI), providing a single runtime for browser-based experiences, forms-based applications, graphics, video, audio, and documents. "Avalon" is built on top of DirectX, which enables it to unleash the full power of the graphics hardware present in modern computers, and is engineered to exploit advances in hardware moving forward. For example, the "Avalon" vector-based rendering engine enables applications to scale to take advantage of high-dpi monitors without requiring extra work on the part of the developer or user. Similarly, when "Avalon" detects a video card that supports hardware acceleration, it takes advantage of it.
  • The "Avalon" Framework. The "Avalon" framework delivers solutions for media, user interface design, and documents that go well beyond what developers have today. "Avalon" is designed for extensibility, enabling developers to create their own controls on top of the "Avalon" engine from scratch or by subclassing existing "Avalon" controls. Central to the "Avalon" framework are controls for shapes, documents, images, video, animation, 3-D, and panels, in which to place controls and content. These primitives provide the building blocks for developing next generation user experiences.
  • XAML. "Avalon" also introduces XAML, a markup language to declaratively represent user interface for Windows applications, improving the richness of the tools with which developers and designers can compose and repurpose UI. For Web developers, XAML provides a familiar UI description paradigm. XAML also enables the separation of UI design from the underlying code, enabling developers and designers to work more closely together.

For developers and designers, "Avalon" provides a unified UI platform, such that they can learn a single paradigm that provides limitless possibilities of UI experiences. For .NET developers, its framework will be familiar, and it will ultimately reduce the number of lines of code required to deliver optimal user experiences. For designers, "Avalon" offers a platform that eliminates boundaries between content, media, and applications. Most importantly, "Avalon" has been engineered so that developers and designers can work closely together synchronously to quickly deliver differentiated, connected experiences.

Avalon March 2005 Community Technical Preview

The "Avalon" team is excited to release this next iteration. There are lots of new features in this release, a handful of which will be enumerated below. And, for those who worked with the November 2004 CTP, there are many changes. This article will touch on some of those changes, but it is not comprehensive.

Note on Community Technology Previews

Community Technical Preview (CTP) builds do not go through the same rigorous testing that beta builds undergo. While betas receive a much higher level of testing and feature work, CTPs are intended to expose developers to the latest working build. CTPs are therefore unsupported, prerelease software and there are some precautions you should take. Please read the latest Readme and Installation Guides before you download or install prerelease software.

Installing "Avalon"

"Avalon" requires the February CTP release of .NET Framework 2.0 to be installed.

In terms of hardware requirements, this CTP requires at least a 1-GHz Pentium-class processor with 256 MB of RAM. A DirectX 9-capable graphics card (for example, ATI Radeon 9600, nVidia GeForce 4, or better) is strongly recommended. The final hardware requirements for "Avalon" have not yet been announced.

WinFX SDK

The distribution for this release includes a release of the WinFX SDK, which includes documentation, tools, and samples for building "Avalon" managed applications. Because this is an interim pre-beta release, expect the documentation to be partially incomplete and some samples to be broken. Many of the new features in this CTP are not fully documented in the SDK. Expect future articles on MSDN to supplement the SDK.

This release also includes basic Visual Studio 2005 tools support for "Avalon" development, including updated templates for building applications running both inside and outside the browser, as well as "Avalon" controls. IntelliSense is provided for both code and markup, and build and debug support is enabled along with integrated help. Again, the release notes provide information on the required components and the correct install order to ensure everything is set up correctly.

Exploring the New Features

The list below is not comprehensive, but provides a glimpse of some of the advances and new features that are part of this release, with links to the SDK for more information.

Visual Brush

VisualBrush is a powerful tool that allows you to paint a visual tree of UI elements onto an "Avalon" element. It enables a high degree of reuse of existing "Avalon" visuals. It differs from the DrawingBrush in that it preserves layout. One of the most interesting use cases for the visual brush is the ability to grab existing content and filling in another part of the tree. A great example of this would be the type of functionality in PowerPoint where there is a small view of the slide to the left of the larger slide.

Below is a simple sample of how to use the visual brush, which paints a rectangle with a canvas that contains a grid of rectangles.

<Page  
  xmlns="https://schemas.microsoft.com/winfx/avalon/2005"
  xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005">
  <Rectangle Height="100" Width="100">
      <Rectangle.Fill>
        <VisualBrush Viewport="0,0,100,80" Viewbox="0,0,100,80" 
ViewportUnits="Absolute" Stretch="Fill" >
          <VisualBrush.Visual>
            <Canvas>
              <Grid Width="100" Height="80" >
                <RowDefinition Height="10"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="10"/>
                <Rectangle Grid.Row="0" Fill="Red"/>
                <Rectangle Grid.Row="1" Fill="Green"/>
                <Rectangle Grid.Row="2" Fill="Red"/>
              </Grid>
            </Canvas>
          </VisualBrush.Visual>
        </VisualBrush>
      </Rectangle.Fill>
    </Rectangle>
</Page>

Aa480168.avalonmarch2005ctp01(en-us,MSDN.10).jpg

The visual brush can be used to paint 3-D surfaces with graphics created in the 2-D world. Below is a simple sample of a visual brush on a 3-D pyramid:

<Page xmlns="https://schemas.microsoft.com/winfx/avalon/2005" 
   xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005" >
   
<Grid Background="#333399">
<Grid.Resources>
  <MeshGeometry3D x:Key="PlaneMesh"
    Positions="-1 -1 -0.5  1 -1 -0.5  -1 1 -0.5  1 1 -0.5  0 0 1"
    Normals="-1 -1 1  1 -1 1  -1 1 1  1 1 1 0 0 1"
    TextureCoordinates="0 1  1 1  0 0  1 0  0.5 0.5 "
    TriangleIndices="0 4 2 2 4 3 4 1 3 0 1 4" />
</Grid.Resources>
<Viewport3D ID="myViewport3D" ClipToBounds="true" Height="480" Width="640" Focusable="true">
  <Viewport3D.Camera>
    <PerspectiveCamera  
      LookAtPoint="0,0,0"
      Position="0,0,5.0"
      Up="0,1,0"
      NearPlaneDistance="0.25"
      FarPlaneDistance="20"
      FieldOfView="60" >
    </PerspectiveCamera>
  </Viewport3D.Camera>
  <Viewport3D.Models >
  
  <AmbientLight Color="#FF0F0F0F" />
  <DirectionalLight Direction="1 1 -1" />
  <GeometryModel3D  Geometry="{PlaneMesh}" StatusOfNextUse="ChangeableReference" >
    <GeometryModel3D.Material>
      <BrushMaterial >
        <BrushMaterial.Brush>
    <VisualBrush Viewbox="0,0,100,100">
 <VisualBrush.Visual>
          <Grid Background="green">
            <StackPanel Width="200" Height="200" Background="yellow">
              <Button></Button>
              <TextFlow>This is some text.  Watch how it wraps around 
the 3d model. Notice how the text bends with the contours of the 3D 
mesh.</TextFlow>
            </StackPanel>
          </Grid>
       </VisualBrush.Visual>
    </VisualBrush>
        </BrushMaterial.Brush>
      </BrushMaterial>
    </GeometryModel3D.Material>
     </GeometryModel3D>
  </Viewport3D.Models>
</Viewport3D>
</Grid>
</Page>

Aa480168.avalonmarch2005ctp02(en-us,MSDN.10).jpg

Rotation3D

With the March CTP, doing rotation transforms on 3-D models becomes much easier. A new class called Rotation3D is introduced that allows rotations. Complementing the Rotation3D class are animation classes for doing rotation animations. One can still get the quaternion slerp behavior by doing a Rotation3DAnimation between two rotation 3-Ds, in which case the Axis/Angle pairs are treated like orientations à la Quaternions.

Building on the example above, below is a sample that rotates the 3-D object, hosted in a Window instead of a page:

<Window xmlns="https://schemas.microsoft.com/winfx/avalon/2005" 
   xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005" >
   
   < Window.Storyboards>
   <ParallelTimeline>
    <SetterTimeline TargetID="myViewport3D"
      Path="(Viewport3D.Models).(Model3DGroup.Children)[2].(GeometryModel3D.Transform).(RotateTransform3D.Rotation).Angle">
      <DoubleAnimation From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever" />
    </SetterTimeline>
    </ParallelTimeline>
   </ Window.Storyboards>
<Grid Background="#333399">
<Grid.Resources>
  <MeshGeometry3D x:Key="PlaneMesh"
    Positions="-1 -1 -0.5  1 -1 -0.5  -1 1 -0.5  1 1 -0.5  0 0 1"
    Normals="-1 -1 1  1 -1 1  -1 1 1  1 1 1 0 0 1"
    TextureCoordinates="0 1  1 1  0 0  1 0  0.5 0.5 "
    TriangleIndices="0 4 2 2 4 3 4 1 3 0 1 4" />
</Grid.Resources>
<Viewport3D ID="myViewport3D" ClipToBounds="true" Height="480" Width="640" Focusable="true">
  <Viewport3D.Camera>
    <PerspectiveCamera  
      LookAtPoint="0,0,0"
      Position="0,0,5.0"
      Up="0,1,0"
      NearPlaneDistance="0.25"
      FarPlaneDistance="20"
      FieldOfView="60" >
    </PerspectiveCamera>
  </Viewport3D.Camera>
  <Viewport3D.Models >
  
  <AmbientLight Color="#FF0F0F0F" />
  <DirectionalLight Direction="1 1 -1" />
  <GeometryModel3D  Geometry="{PlaneMesh}" StatusOfNextUse="ChangeableReference" >
    <GeometryModel3D.Material>
      <BrushMaterial >
        <BrushMaterial.Brush>
    <VisualBrush Viewbox="0,0,100,100">
 <VisualBrush.Visual>
          <Grid Background="green">
            <StackPanel Width="200" Height="200" Background="yellow">
              <Button></Button>
              <TextFlow>This is some text.  Watch how it wraps around 
the 3d model.</TextFlow>
            </StackPanel>
          </Grid>
       </VisualBrush.Visual>
    </VisualBrush>
        </BrushMaterial.Brush>
      </BrushMaterial>
    </GeometryModel3D.Material>
    <GeometryModel3D.Transform >
        <RotateTransform3D Center="0 0 0" >
          <RotateTransform3D.Rotation>
            <Rotation3D Axis="0 1 1" Angle="40" >
            </Rotation3D>
          </RotateTransform3D.Rotation>
        </RotateTransform3D>
    </GeometryModel3D.Transform>

  </GeometryModel3D>
  </Viewport3D.Models>
</Viewport3D>
</Grid>
</ Window >

Aa480168.avalonmarch2005ctp02a(en-us,MSDN.10).jpg

Aa480168.avalonmarch2005ctp02b(en-us,MSDN.10).jpg

Event Triggers

Similar to property triggers, event triggers allow actions to occur when events are fired. They are especially useful when starting animations based on user input. The sample below gives a sense of how to use event triggers to start an animation based on the MouseEnter and MouseLeave events:

<Canvas 
    xmlns="https://schemas.microsoft.com/winfx/avalon/2005"
    xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005">
  <Canvas.Resources>
    <Style x:Key="sample">
      <Button Width="100" Height="30"/>
      <Style.VisualTriggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter">
          <EventTrigger.Actions>
            <BeginAction TargetId="enterStoryboard"/>
          </EventTrigger.Actions>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave">
          <EventTrigger.Actions>
            <BeginAction TargetId="exitStoryboard"/>
          </EventTrigger.Actions>
        </EventTrigger>
      </Style.VisualTriggers>
      <Style.Storyboards>
        <SetterTimeline ID="enterStoryboard" BeginTime="*null" Path="(Button.Width)">
          <DoubleAnimation To="300" Duration="0:0:2"/>
        </SetterTimeline>
        <SetterTimeline ID="exitStoryboard" BeginTime="*null" Path="(Button.Width)">
          <DoubleAnimation To="100" Duration="0:0:2"/>
        </SetterTimeline>
      </Style.Storyboards>
    </Style>
  </Canvas.Resources>
  <Button Style="{sample}" Canvas.Left="50" Canvas.Top="10">Grow!</Button>
  <Button Style="{sample}" Canvas.Left="50" Canvas.Top="60">Grow!</Button>
  <Button Style="{sample}" Canvas.Left="50" Canvas.Top="110">Grow!</Button>
  <Button Style="{sample}" Canvas.Left="50" Canvas.Top="160">Grow!</Button>
</Canvas>

Aa480168.avalonmarch2005ctp03(en-us,MSDN.10).jpg

There are some things to be aware of with event triggers in this release. First, EventTriggers are only available within Styles, not on Elements, in this CTP. Also, note that animations from markup outside of Storyboards will likely be removed in the future. It is recommended that you use Storyboards for all animations moving forward. In writing EventTriggers within styles, you'll need to access elements in the Style's VisualTree. Lastly, the API currently lacks "BecameClicked" and "BecameUnclicked" events, so triggering alternative Storyboards depending on the Click state of a control is not currently possible. This should be resolved in a later release.

New Controls

Toolbar and ToolBarTray. The toolbar provides a container for a group of commands or controls. The ToolBarTray contains a set of toolbar items. Toolbars derives from the HeaderItemsControl, just as MenuItem is. Below is a sample of a toolbar tray with some toolbars:

<Page  
  xmlns="https://schemas.microsoft.com/winfx/avalon/2005"
  xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005">
  <ToolBarTray>
    <ToolBar>
      <Canvas  Width= "100" Height="100"  >
        <Rectangle  Width="50" Height="25" 
               Canvas.Top="50" Canvas.Left="25" Fill="Red" />
        <Rectangle  Width="20" Height="15" 
               Canvas.Top="35" Canvas.Left="35" Fill="Red" />
        <Ellipse  RadiusX="6" RadiusY="6" CenterX="37" CenterY="75" 
               Fill="Black" />
        <Ellipse  RadiusX="6" RadiusY="6" CenterX="62" CenterY="75" 
               Fill="Black" />
        <Ellipse  RadiusX="5" RadiusY="5" CenterX="75" CenterY="65" 
             Fill="Yellow" />
      </Canvas>
    </ToolBar>
    <ToolBar>
      <TextBlock FontSize="20">Some Text</TextBlock></ToolBar>
  </ToolBarTray>
</Page>

Aa480168.avalonmarch2005ctp04(en-us,MSDN.10).jpg

Password Box. This control provides masking when typing in sensitive data. It includes properties such as PasswordChar for specifying the character that is displayed to the user and MaxLength for limiting the length. It has the additional feature of storing the password as a System.Security.SecureString, such that the text is encrypted for privacy when being used, and deleted from computer memory when no longer needed.

New Tool: XAMLPad

The WinFX SDK has a new tool that can be found in the SDK /bin directory called XAMLPad.exe. This tool allows you to edit XAML and see the results in real-time, as opposed to having to compile the XAML file to see the effect of a change.

The SDK Threading Model

The threading model has received a significant overhaul in this CTP. The model has switched from the rental threading model to a simpler "single" threading model. As such, the UIContext class is no longer available as a constructor for many of the classes. The Dispatcher class has replaced much of the functionality of the UIContext class.

Significant Changes

A number of things change with this release for those who have been working with the November 2004 Avalon CTP. While not comprehensive, the list below addresses some of the more significant changes.

XAML Changes

First, there have been changes to the XML namespace.

November CTP syntax

<Window x:Class=" "
    xmlns="https://schemas.microsoft.com/2003/xaml" xmlns:x="Definition"

March CTP syntax

< Window x:Class=" "
    xmlns="https://schemas.microsoft.com/winfx/avalon/2005"    xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005"
    >

Second, when creating a style that can be referenced, use x:Key instead of x:Name.

November CTP syntax

<Style x:Name="myCanvasStyle">
         ...
</Style>

March CTP syntax

<Style x:Key="myCanvasStyle">
         ...
</Style>

Third, the syntax inside of attributes for non-literal values such as styles and classes have changed. The old syntax will still work in this CTP, but will be deprecated moving forward, so we recommend that you use the new syntax. See the SDK for more details.

November CTP syntax March CTP syntax
"*null"
"{x:Null}"
"*typeof(Button)"
"{x:Type Button}"
"*Class.Field"
"{x:Static Class.Field}"
"*Bind(Path=firstname)"
"{Bind Path=firstname}"
"{foo}"
"{StaticResource foo}"
"{foo}"
"{DynamicResource foo}"
"{*typeof(Button)}"
"{Resource {x:Type Button}}"

Layout

There have been significant changes to how layout works in this release. Below is a list of some of the major things to watch for when working with the new layout model.

  • The FlowPanel has been replaced with the StackPanel.
  • Pane has been replaced with Page.
  • The GridPanel has been completely removed.
  • Many properties (Height, Width, Top, Bottom, etc.) are now of type Double as opposed to type Length. Also, percentages cannot be used to set relative properties any longer. Instead, to achieve the effect of 100%, set the HorizontalAlignment and VerticalAlignment properties to Stretch.
  • The Canvas element no longer does any implicit layout. The canvas is a surface in which every child element must declare its exact position and size.
  • Dock Filling has been changed, such that the "Fill" value of the enum has been removed and replaced with the LastChildFill Boolean property on DockPanel.

As you work with the layout engine, you will likely encounter many other modifications in both syntax and behavior.

Animation and Timing

The animation and timing system has received a significant overhaul to make them easier to understand and use and to avoid conflicting properties. The fundamental way timelines and animations work has changed. See the SDK for more information on how animation and timing now works. Moreover, there have been major syntactic changes to the API to make it clearer.

For example, time is now represented as TimeSpan-based values instead of Time values. When writing animations in XAML, time values for the new properties must be specified in markup using the TimeSpan format which is, at a glance, "0:0:3" == 3 seconds.

With regard to timelines, The ParallelTimeline class is the replacement for the current use of Timeline in markup and code. Timeline is now an abstract class. Creating a TimelineClock from a Timeline has been simplified to calling the CreateClock method.

For more information on animation and storyboards, see the Animation Overview and the Storyboards Overview.

Loose XAML

Support for "loose XAML" activation has been removed. You can no longer navigate to a .XAML file directly from the browser. However, you can still load XAML at runtime using the Parser.LoadXAML() method.

Changeable Becomes Freezable

The Changeable class has been modified and is now the Freezable class. Freezable works similarly to Changeable insofar as it provides a mechanism for simulating mutability with objects that are ostensibly immutable in cases when you need to modify an object after it has been used, for example changing a background color. The Changeable class had an important property called StatusOfNextUse, which took a UseStatus enumeration, which has been removed. See the WinFX SDK topic Freezable Objects Overview for more information.

What's Missing from This Release

Media (audio and video) and printing are both missing from this build. However, they will both be enabled in a future CTP release. Some demos that rely on these features will either not compile, or will in some cases simply silently fail on execution.

Appendix

New Types

Below is a list of all the new types that have been added to the System.Windows.* namespaces. See the SDK for more details on these new types:

System.Windows.AlternativeExpressionStorageCallback
System.Windows.BaselineAlignment
System.Windows.Commands.RoutedCommand
System.Windows.Controls.ContextMenuService
System.Windows.Controls.ControlTemplate
System.Windows.Controls.DocumentViewer
System.Windows.Controls.ListBoxItem
System.Windows.Controls.Page
System.Windows.Controls.PasswordBox
System.Windows.Controls.Primitives.IScrollBarPanel
System.Windows.Controls.Primitives.PopupAnimation
System.Windows.Controls.Primitives.ScrollBarPanel
System.Windows.Controls.Primitives.ScrollEventArgs
System.Windows.Controls.Primitives.ScrollEventHandler
System.Windows.Controls.Primitives.ScrollEventType
System.Windows.Controls.Primitives.TextBoxBase
System.Windows.Controls.RichTextBox
System.Windows.Controls.TextBlock
System.Windows.Controls.ToolBar
System.Windows.Controls.ToolBarTray
System.Windows.Controls.ToolTipService
System.Windows.Data.CollectionView
System.Windows.Data.CompositeCollection
System.Windows.Data.ObservableCollection`1
System.Windows.Data.UpdateSourceExceptionFilterCallback
System.Windows.DataTrigger
System.Windows.DependencyPropertyKey
System.Windows.Documents.ColumnBreak
System.Windows.Documents.DocumentLayout
System.Windows.Documents.DocumentLayoutType
System.Windows.Documents.DocumentPageView
System.Windows.Documents.FixedBitmapSerializerService
System.Windows.Documents.FixedDocument
System.Windows.Documents.Floater
System.Windows.Documents.FloaterClear
System.Windows.Documents.FlowDocument
System.Windows.Documents.FrameworkRichTextComposition
System.Windows.Documents.GetPageCompletedEventArgs
System.Windows.Documents.GetPageCompletedEventHandler
System.Windows.Documents.GetPageForContentPositionCompletedEventArgs
System.Windows.Documents.GetPageForContentPositionCompletedEventHandler
System.Windows.Documents.Hyperlink
System.Windows.Documents.IDocumentPaginator
System.Windows.Documents.ListItem
System.Windows.Documents.PagesChangedEventArgs
System.Windows.Documents.PagesChangedEventHandler
System.Windows.Documents.PaginationProgressEventArgs
System.Windows.Documents.PaginationProgressEventHandler
System.Windows.Documents.TextChangeCollection
System.Windows.Documents.TextEffectResolver
System.Windows.Documents.TextEffectTarget
System.Windows.Documents.TextFlow
System.Windows.Documents.TextPointer
System.Windows.Documents.TextPointerContext
System.Windows.Documents.ZoomPercentageConverter
System.Windows.DynamicResourceExtension
System.Windows.EventSetter
System.Windows.EventTrigger
System.Windows.FrameworkTemplate
System.Windows.Freezable
System.Windows.FreezableHelper
System.Windows.IIdScope
System.Windows.Input.RawTextInputReport
System.Windows.Interop.HwndSourceParameters
System.Windows.LayoutPriority
System.Windows.Loc
System.Windows.Media.AlignmentX
System.Windows.Media.AlignmentY
System.Windows.Media.Animation.BeginAction
System.Windows.Media.Animation.ClockController
System.Windows.Media.Animation.ClockGroup
System.Windows.Media.Animation.DeactivateAction
System.Windows.Media.Animation.DiscreteRotation3DKeyFrame
System.Windows.Media.Animation.Duration
System.Windows.Media.Animation.DurationConverter
System.Windows.Media.Animation.KeyFrameRotation3DAnimation
System.Windows.Media.Animation.LinearRotation3DKeyFrame
System.Windows.Media.Animation.ParallelTimeline
System.Windows.Media.Animation.PauseAction
System.Windows.Media.Animation.ResumeAction
System.Windows.Media.Animation.ReverseAction
System.Windows.Media.Animation.Rotation3DAnimation
System.Windows.Media.Animation.Rotation3DAnimationBase
System.Windows.Media.Animation.Rotation3DKeyFrame
System.Windows.Media.Animation.Rotation3DKeyFrameCollection
System.Windows.Media.Animation.SeekAction
System.Windows.Media.Animation.SplineRotation3DKeyFrame
System.Windows.Media.Animation.TimelineAction
System.Windows.Media.Animation.TimelineGroup
System.Windows.Media.BitmapCacheOption
System.Windows.Media.BitmapCodecInfo
System.Windows.Media.BitmapCreateOptions
System.Windows.Media.BitmapDecoder
System.Windows.Media.BitmapDecoderBmp
System.Windows.Media.BitmapDecoderGif
System.Windows.Media.BitmapDecoderIcon
System.Windows.Media.BitmapDecoderInternal
System.Windows.Media.BitmapDecoderJpeg
System.Windows.Media.BitmapDecoderPng
System.Windows.Media.BitmapDecoderTiff
System.Windows.Media.BitmapDecoderWmp
System.Windows.Media.BitmapEncoder
System.Windows.Media.BitmapEncoderBmp
System.Windows.Media.BitmapEncoderGif
System.Windows.Media.BitmapEncoderInternal
System.Windows.Media.BitmapEncoderJpeg
System.Windows.Media.BitmapEncoderPng
System.Windows.Media.BitmapEncoderTiff
System.Windows.Media.BitmapImage
System.Windows.Media.BitmapImageSerializerService
System.Windows.Media.BitmapLoadCompletedEventHandler
System.Windows.Media.BitmapLoadProgressChangedEventArgs
System.Windows.Media.BitmapLoadProgressChangedEventHandler
System.Windows.Media.BitmapPalette
System.Windows.Media.BitmapPalettes
System.Windows.Media.BitmapSizeOptions
System.Windows.Media.BitmapSource
System.Windows.Media.BitmapSourceCollection
System.Windows.Media.BitmapSourceConverter
System.Windows.Media.BitmapVisualManager
System.Windows.Media.CaptureCompleteHandler
System.Windows.Media.CombinedGeometry
System.Windows.Media.DrawingCollection
System.Windows.Media.DrawingGroup
System.Windows.Media.GeometryDrawing
System.Windows.Media.GeometryGroup
System.Windows.Media.GlyphRunDrawing
System.Windows.Media.ImageDrawing
System.Windows.Media.Media3D.Rotation3D
System.Windows.Media.TextFormatting.CharacterHit
System.Windows.Media.TextFormatting.CharacterShapingProperties
System.Windows.Media.TextFormatting.GlyphShapingProperties
System.Windows.Media.TextFormatting.NumberCultureSource
System.Windows.Media.TextFormatting.NumberSubstitution
System.Windows.Media.TextFormatting.NumberSubstitutionMethod
System.Windows.Media.VideoDrawing
System.Windows.Media.VisualBrush
System.Windows.MultiDataTrigger
System.Windows.Navigation.NavigationService
System.Windows.Navigation.RequestNavigateEventArgs
System.Windows.Navigation.RequestNavigateEventHandler
System.Windows.RoutedEventHandlerInfo
System.Windows.Serialization.BitmapImageConverter
System.Windows.Serialization.IStyleConnector
System.Windows.Serialization.LiteralExtension
System.Windows.Serialization.Localization.BamlLocalizabilityResolver
System.Windows.Serialization.Localization.BamlLocalizableResource
System.Windows.Serialization.Localization.BamlLocalizationDictionary
System.Windows.Serialization.Localization.BamlLocalizationDictionaryEnumerator
System.Windows.Serialization.Localization.BamlLocalizationOptions
System.Windows.Serialization.Localization.BamlLocalizer
System.Windows.Serialization.Localization.ElementLocalizability
System.Windows.Serialization.MarkupExtension
System.Windows.Serialization.NullExtension
System.Windows.Serialization.SerializationMode
System.Windows.Serialization.StaticExtension
System.Windows.Serialization.TypeExtension
System.Windows.Serialization.XamlConstructorParametersEndNode
System.Windows.Serialization.XamlConstructorParametersStartNode
System.Windows.Serialization.XamlKeyElementEndNode
System.Windows.Serialization.XamlKeyElementStartNode
System.Windows.Serialization.XamlTemplateSerializer
System.Windows.Setter
System.Windows.SetterBase
System.Windows.SetterBaseCollection
System.Windows.StaticResourceExtension
System.Windows.StoryboardCollection
System.Windows.SystemFonts
System.Windows.TextAlignment
System.Windows.TextDecorationCollection
System.Windows.TextDecorationCollectionConverter
System.Windows.Threading.Dispatcher
System.Windows.Threading.DispatcherEventArgs
System.Windows.Threading.DispatcherExceptionEventArgs
System.Windows.Threading.DispatcherExceptionEventHandler
System.Windows.Threading.DispatcherExceptionFilterEventArgs
System.Windows.Threading.DispatcherExceptionFilterEventHandler
System.Windows.Threading.DispatcherFrame
System.Windows.Threading.DispatcherHookEventArgs
System.Windows.Threading.DispatcherHookEventHandler
System.Windows.Threading.DispatcherHooks
System.Windows.Threading.DispatcherObject
System.Windows.Threading.DispatcherOperation
System.Windows.Threading.DispatcherOperationCallback
System.Windows.Threading.DispatcherOperationStatus
System.Windows.Threading.DispatcherPriority
System.Windows.Threading.DispatcherTimer
System.Windows.Threading.PriorityRange
System.Windows.TriggerAction
System.Windows.TriggerActionCollection
System.Windows.TriggerCollection
System.Windows.TriggerInvalidatedEventArgs
System.Windows.TriggerInvalidatedEventHandler
System.Windows.VerticalAlignment

Removed Types

Many types have been deprecated since the November 2004 CTP. Below is a list of the types from the System.Windows.* namespace:

System.Windows.Annotations.Anchoring.DataIdProcessor
System.Windows.Annotations.Anchoring.DynamicSelectionProcessor
System.Windows.Annotations.Anchoring.LocatorManager
System.Windows.Annotations.Anchoring.PathNode
System.Windows.Annotations.Anchoring.SelectionProcessor
System.Windows.Annotations.Anchoring.SubTreeProcessor
System.Windows.Annotations.Anchoring.TextFingerprintProcessor
System.Windows.Annotations.Anchoring.TextSelectionProcessor
System.Windows.Annotations.Anchoring.TreeNodeSelectionProcessor
System.Windows.Annotations.AnnotationPanel
System.Windows.Annotations.Component.IAttachedAnnotationComponent
System.Windows.Annotations.Storage.XmlFileStore
System.Windows.AVTempUIPermission
System.Windows.AVTUIPermissionFullScreen
System.Windows.AVTUIPermissionNewWindow
System.Windows.BamlLocalizationManager
System.Windows.BamlLocalizationOptions
System.Windows.BamlResourceDictionary
System.Windows.BamlResourceDictionaryEnumerator
System.Windows.Changeable
System.Windows.ChangeableHelper
System.Windows.Commands.Command
System.Windows.Commands.CommandInvokeEventArgs
System.Windows.Commands.CommandInvokeEventHandler
System.Windows.Commands.CommandLink
System.Windows.Commands.CommandLinkCollection
System.Windows.Commands.ICommandTarget
System.Windows.Commands.KeyBindingConverter
System.Windows.Commands.PenBinding
System.Windows.Commands.QueryStatusEventArgs
System.Windows.Commands.QueryStatusEventHandler
System.Windows.Commands.ReadOnlyCommandLinkCollection
System.Windows.Commands.StandardCommands
System.Windows.Commands.UICommandLink
System.Windows.Controls.ColumnStyle
System.Windows.Controls.ColumnStyles
System.Windows.Controls.ContentChangedDelegate
System.Windows.Controls.ContentChangedEventArgs
System.Windows.Controls.FlowOrientation
System.Windows.Controls.FlowPanel
System.Windows.Controls.GetPageCompletedEventArgs
System.Windows.Controls.GetPageCompletedEventHandler
System.Windows.Controls.GridPanel
System.Windows.Controls.ItemsView
System.Windows.Controls.ListItem
System.Windows.Controls.PaginationCompleteDelegate
System.Windows.Controls.PaginationCompleteEventArgs
System.Windows.Controls.PaginationProgressDelegate
System.Windows.Controls.PaginationProgressEventArgs
System.Windows.Controls.Pane
System.Windows.Controls.Primitives.PageElement
System.Windows.Controls.Primitives.PageSource
System.Windows.Controls.Primitives.ScrollArea
System.Windows.Controls.Primitives.ScrollBarPrimitive
System.Windows.Controls.RowStyle
System.Windows.Controls.RowStyles
System.Windows.Controls.Text
System.Windows.Data.DataListFilterCallback
System.Windows.Data.ExceptionFilterCallback
System.Windows.Data.ParameterCollection
System.Windows.Data.QueryCommand
System.Windows.Data.SqlCommandList
System.Windows.Data.SqlDataSource
System.Windows.Data.SqlDataSource+SqlDataSourceMode
System.Windows.Data.UIContextCollectionView
System.Windows.Documents.AdaptiveBox
System.Windows.Documents.AdaptiveMetricsContext
System.Windows.Documents.AdaptiveProperties
System.Windows.Documents.BlockElement
System.Windows.Documents.BreakRecord
System.Windows.Documents.CaptionedDrawing
System.Windows.Documents.ColumnPreference
System.Windows.Documents.ElementEdge
System.Windows.Documents.Emphasis
System.Windows.Documents.FixedImageSerializerService
System.Windows.Documents.FixedPanel
System.Windows.Documents.FlowRepresentation
System.Windows.Documents.Heading
System.Windows.Documents.IDocumentContentHost
System.Windows.Documents.IDocumentFormatter
System.Windows.Documents.IDocumentFormatterAsync
System.Windows.Documents.Illustration
System.Windows.Documents.InlineElement
System.Windows.Documents.ListElementItem
System.Windows.Documents.MeasurePageCompletedEventArgs
System.Windows.Documents.MeasurePageCompletedEventHandler
System.Windows.Documents.MilMetrics
System.Windows.Documents.Note
System.Windows.Documents.OrientedTextPosition
System.Windows.Documents.PageDescriptor
System.Windows.Documents.ReadingMetricsCache
System.Windows.Documents.Section
System.Windows.Documents.SmallCaps
System.Windows.Documents.TextContainer
System.Windows.Documents.TextContainerChangedEventArgs
System.Windows.Documents.TextContainerChanges
System.Windows.Documents.TextEditor
System.Windows.Documents.TextEffectSetter
System.Windows.Documents.TextHighlight
System.Windows.Documents.TextMultiHighlight
System.Windows.Documents.TextMultiRange
System.Windows.Documents.TextMultiRangeMovedEventArgs
System.Windows.Documents.TextMultiRangeMovedEventHandler
System.Windows.Documents.TextNavigator
System.Windows.Documents.TextPanel
System.Windows.Documents.TextPosition
System.Windows.Documents.TextRangeEnds
System.Windows.Documents.TextRangeMovedEventArgs
System.Windows.Documents.TextRangeMovedEventHandler
System.Windows.Documents.TextSymbolType
System.Windows.Documents.TextView
System.Windows.EmbeddedDialog
System.Windows.EmbeddedDialogPosition
System.Windows.FloatingBreak
System.Windows.FlowBehavior
System.Windows.Forms.Integration.ConversionType
System.Windows.Forms.Integration.ConvertToSystemDrawing
System.Windows.Forms.Integration.ConvertToSystemWindows
System.Windows.Forms.Integration.ElementHost
System.Windows.HorizontalLayoutAlignment
System.Windows.HwndDispatcher
System.Windows.Interop.GdiConverter
System.Windows.ITextEmbeddable
System.Windows.ITextHost
System.Windows.Length
System.Windows.LocalizableResource
System.Windows.Media.Animation.DiscreteLengthKeyFrame
System.Windows.Media.Animation.InteractiveController
System.Windows.Media.Animation.KeyFrameLengthAnimation
System.Windows.Media.Animation.LengthAnimation
System.Windows.Media.Animation.LengthAnimationBase
System.Windows.Media.Animation.LengthKeyFrame
System.Windows.Media.Animation.LengthKeyFrameCollection
System.Windows.Media.Animation.LinearLengthKeyFrame
System.Windows.Media.Animation.PathLengthAnimation
System.Windows.Media.Animation.SplineLengthKeyFrame
System.Windows.Media.GlyphProperties
System.Windows.Media.HorizontalAlignment
System.Windows.Media.HwndInterop
System.Windows.Media.HwndMode
System.Windows.Media.HwndType
System.Windows.Media.HwndVisual
System.Windows.Media.ImageAddins
System.Windows.Media.ImageCodecInfo
System.Windows.Media.ImageData
System.Windows.Media.ImageDataSerializerService
System.Windows.Media.ImageDecoder
System.Windows.Media.ImageDecoderBmp
System.Windows.Media.ImageDecoderGif
System.Windows.Media.ImageDecoderIcon
System.Windows.Media.ImageDecoderInternal
System.Windows.Media.ImageDecoderJpeg
System.Windows.Media.ImageDecoderPng
System.Windows.Media.ImageDecoderTiff
System.Windows.Media.ImageDecoderWmp
System.Windows.Media.ImageEffect
System.Windows.Media.ImageEffectBlur
System.Windows.Media.ImageEffectBrightnessContrast
System.Windows.Media.ImageEffectColorTransform
System.Windows.Media.ImageEffectFlipRotate
System.Windows.Media.ImageEffectFormat
System.Windows.Media.ImageEffectGammaCorrect
System.Windows.Media.ImageEffectGlow
System.Windows.Media.ImageEffectGrayscale
System.Windows.Media.ImageEffectNegate
System.Windows.Media.ImageEffectSharpen
System.Windows.Media.ImageEffectSource
System.Windows.Media.ImageEffectTint
System.Windows.Media.ImageEncoder
System.Windows.Media.ImageEncoderBmp
System.Windows.Media.ImageEncoderGif
System.Windows.Media.ImageEncoderInternal
System.Windows.Media.ImageEncoderJpeg
System.Windows.Media.ImageEncoderPng
System.Windows.Media.ImageEncoderTiff
System.Windows.Media.ImageEncoderWmp
System.Windows.Media.ImageExchangeID
System.Windows.Media.ImageExchangeMetadata
System.Windows.Media.ImageExchangeMetadataEnumerator
System.Windows.Media.ImageExchangeProperty
System.Windows.Media.ImageLoadCompletedEventHandler
System.Windows.Media.ImageLoadProgressChangedEventArgs
System.Windows.Media.ImageLoadProgressChangedEventHandler
System.Windows.Media.ImageMetadata
System.Windows.Media.ImageMetadataRational
System.Windows.Media.ImageMetadataUnsignedRational
System.Windows.Media.ImagePalette
System.Windows.Media.ImagePaletteType
System.Windows.Media.ImageSizeOptions
System.Windows.Media.ImageSource
System.Windows.Media.ImageSourceCollection
System.Windows.Media.ImageSourceConverter
System.Windows.Media.ImageVisualManager
System.Windows.Media.Media3D.BumpMap
System.Windows.Media.Media3D.ExponentialFog
System.Windows.Media.Media3D.Fog
System.Windows.Media.Media3D.LinearFog
System.Windows.Media.Media3D.ReflectionEnvironmentMap
System.Windows.Media.Media3D.RefractionEnvironmentMap
System.Windows.Media.Media3D.ShadingMode
System.Windows.Media.MediaSystem
System.Windows.Media.TextFormatting.TextRunCacheActions
System.Windows.Media.VerticalAlignment
System.Windows.Navigation.INavigator
System.Windows.Navigation.INavigatorService
System.Windows.Navigation.Journal
System.Windows.Navigation.JournalEntryUri
System.Windows.Navigation.NavigateEventArgs
System.Windows.Navigation.NavigateEventHandler
System.Windows.Navigation.NavigationErrorCancelEventArgs
System.Windows.Navigation.NavigationErrorCancelEventHandler
System.Windows.Serialization.CustomXamlDeserializer
System.Windows.Serialization.EventContext
System.Windows.Serialization.ExpressionSerializationMode
System.Windows.Serialization.ImageDataConverter
System.Windows.Serialization.RoutedEventContext
System.Windows.Serialization.SerializationAction
System.Windows.Serialization.SerializationErrorAction
System.Windows.Serialization.XamlBodySerializer
System.Windows.Serialization.XamlContentControlSerializer
System.Windows.Serialization.XamlContentPresenterSerializer
System.Windows.Serialization.XamlCustomizableSerializer
System.Windows.Serialization.XamlDesigner
System.Windows.Serialization.XamlItemCollectionSerializer
System.Windows.Serialization.XamlItemsControlSerializer
System.Windows.Serialization.XamlLengthSerializer
System.Windows.Serialization.XamlSpacingSerializer
System.Windows.Serialization.XamlThicknessSerializer
System.Windows.Spacing
System.Windows.SpacingConverter
System.Windows.SystemBrushes
System.Windows.SystemMetrics
System.Windows.TextDecorationsConverter
System.Windows.TrustManagement.AlertState
System.Windows.TrustManagement.ApplicationSecurityDescription
System.Windows.TrustManagement.CategoryAccessLevel
System.Windows.TrustManagement.CategoryMapperAttribute
System.Windows.TrustManagement.Configuration.AddResult
System.Windows.TrustManagement.Configuration.ElseIfStatement
System.Windows.TrustManagement.Configuration.ElseStatement
System.Windows.TrustManagement.Configuration.Evaluator
System.Windows.TrustManagement.Configuration.EvaluatorCollection
System.Windows.TrustManagement.Configuration.IfStatement
System.Windows.TrustManagement.Configuration.NamedPermissionSets
System.Windows.TrustManagement.Configuration.PermissionSetComparison
System.Windows.TrustManagement.Configuration.PrivacyEvaluator
System.Windows.TrustManagement.Configuration.Rule
System.Windows.TrustManagement.Configuration.Rules
System.Windows.TrustManagement.Configuration.SecurityTrustEvaluatorConfiguration
System.Windows.TrustManagement.Configuration.SignatureEvidence
System.Windows.TrustManagement.Configuration.TrustConsentContext
System.Windows.TrustManagement.Configuration.TrustHostInfo
System.Windows.TrustManagement.Configuration.TrustManagerConfiguration
System.Windows.TrustManagement.Configuration.TrustUIOverride
System.Windows.TrustManagement.Configuration.ZoneEvidence
System.Windows.TrustManagement.ICategoryMapperCreator
System.Windows.TrustManagement.ITrustEvaluator
System.Windows.TrustManagement.IWindowsTrustUI
System.Windows.TrustManagement.ObjectiveEvaluationState
System.Windows.TrustManagement.ObjectiveTrustResult
System.Windows.TrustManagement.ObjectiveTrustResultCollection
System.Windows.TrustManagement.PermissionCategorySet
System.Windows.TrustManagement.PermissionCategoryType
System.Windows.TrustManagement.ResourceConsumptionLevel
System.Windows.TrustManagement.ResourceLoader
System.Windows.TrustManagement.SubjectiveEvaluationState
System.Windows.TrustManagement.SubjectiveTrustResult
System.Windows.TrustManagement.SubjectiveTrustResultCollection
System.Windows.TrustManagement.TranslatePermissionToCategory
System.Windows.TrustManagement.TrustDialog
System.Windows.TrustManagement.TrustDialogResults
System.Windows.TrustManagement.TrustManager
System.Windows.TrustManagement.TrustManagerContext
System.Windows.TrustManagement.TrustManagerSettings
System.Windows.TrustManagement.TrustReport
System.Windows.TrustManagement.TrustResult
System.Windows.TrustManagement.TrustResult+ResultType
System.Windows.TrustManagement.TrustResultCollection
System.Windows.TrustManagement.TrustUIDialog
System.Windows.UnitType
System.Windows.VerticalBoxAlignment
System.Windows.VerticalLayoutAlignment
System.Windows.VisualTriggerCollection
System.Windows.Win32Dispatcher
System.Windows.Win32Msg
System.Windows.WrapStyle