Friday, April 27, 2012

WinRT XAML Toolkit - Controls, extensions and helper classes for WinRT

CodePlex - WinRT XAML Toolkit

A set of controls, extensions and helper classes for Windows Runtime XAML applications

Features

  • A copy of the AsyncUI library - a set of extension methods for UI classes that add support for async/await to wait for events such as:
    • Wait for a BitmapImage to load
    • Wait for a Button or one of a list of buttons to be clicked
    • Wait for a FrameworkElement to load, unload or become non-zero-sized
    • Wait for a MediaElement to change state - eg. to start or finish playback
    • Wait for a Selector (e.g. ListBox) to change selected item
    • Wait for a Storyboard to complete
  • Controls
    • AnimatingContainer - a container control that will animate its contents rotating or zooming in/out, eg. to make them feel more alive
    • CascadingTextBlock - a TextBlock replacement that animates the individual letters in a cascade - fading in while falling down into position, then optionally fading out while falling down from the standard position
    • CountdownControl - a movie-style control that animates a ring-slice shape while counting down seconds - e.g. to take a picture with a camera after a given number of seconds (supports async/await)
    • DelayedLoadControl - given a content/DataTemplate - loads the contents after a given amount of time - e.g. to allow for staged loading of contents on screen
    • PieSlice - a pie slice path/shape given StartAngle, EndAngle and Radius
    • RingSlice - a pie slice path/shape given StartAngle, EndAngle, Radius and InnerRadius
    • TextBlockExtensions/GetCharacterRect() - an extension method that returns a rectangle that holds a character at a given index in the TextBlock
  • Conterters
    • BooleanToDataTemplateConverter - given two DataTemplates (TrueTemplate and FalseTemplate) - converts the input value to the given template. A different take on DataTemplateSelector.
  • Extensions
    • WriteableBitmap - a set of extension methods for a WriteableBitmap
      • ColorExtensions - Conversions between pixels and pixel buffer types of byte, int and Color
      • IBufferExtensions - Adds a GetPixels() extension method to the PixelBuffer property of a WriteableBitmap that reads in the buffer to a byte array and exposes an indexer compatible to the one of the Pixels property in Silverlight's WriteableBitmap
      • WriteableBitmapSaveExtensions - support for loading and saving the bitmap to/from files
      • WriteableBitmapBlitBlockExtensions - support for quick blitting of a full-width section of a bitmap to another bitmap of same width
      • WriteableBitmapCopyExtensions - support creating a copy of a WriteableBitmap
      • WriteableBitmapCropExtensions - support for creating a cropped version of a WriteableBitmap
      • WriteableBitmapFloodFillExtensions - support for flood-filling a region of a WriteableBitmap - either limited by an outline color or by replacing a given color - usually a color at the starting position or colors similar to it
    • Serialization
      • JsonSerialization - allows to serialize a properly DataContract-annotated object to a JSON string or file or deserialize an existing one.
      • XmlSerialization - allows to serialize a properly DataContract- or XmlSerializer-annotated object to a XML string or file or deserialize an existing one.
    • StringIOExtensions - allows to easily read or write a string from/to file in a single call
  • VisualTree helpers
    • VisualTreeDebugger - provides a trace of the visual tree structure when a control loads, its layout updates or it gets tapped as well as allowing the application to break in the debugger if one of these events occurs
    • VisualTreeHelperExtensions - provides a set of extension methods that enumerate visual tree ascendants/descendants of a given control - making it easy to do these operations with LINQ as well as simple ways to list controls of a given type or find the first control of a given type searching up or down the visual tree

..."

With jump that is WinRT, with its locked down, limited .Net profile, we'll be seeing a number of libraries, projects and such like this. I don't know what it is about this one, but I just thought it cool and something I wanted to share... :)

No comments: