Skip to content
Rico Suter edited this page Aug 21, 2015 · 19 revisions

Legend:

  • all = Available for all platforms (PCL)
  • SL = Silverlight 5
  • WinRT = Windows 8.1 and Windows Phone 8.1 (PCL library for W8.1 and WP8.1 WinRT)
  • UWP = Universal Windows Platform (Windows 10)
  • WP7SL = Windows Phone 7 Silverlight
  • WP8SL = Windows Phone 8 Silverlight
  • WPF = .NET 4.5 (WPF)
  • WP = WP7SL and WP8SL

Most popular: YouTube, Http, Paging, ObservableCollectionView, ...

MVVM (Model-View-ViewModel)

Package: MyToolkit

MVVM Overview

View models

  • ViewModelBase (all), view model base class which implements ObservableObject and provides a loading property and life cycle methods
  • ViewModelHelper (all): Contains helper methods to correctly wire up view models to views or the Windows Phone progress bar.

Data modelling

  • ObservableObject (all), INotifyPropertyChanged implementation to simplify observable model implementation
  • GraphObservableObject (all), observable object with child tracking and property changed event with old and new value
  • UndoRedoManager (all), transparent undo/redo implementation based on a graph of observable objects

Commands (ICommand implementations)

  • RelayCommand (all), an ICommand implementation which takes an action and a predicate to run its logic
  • AsyncRelayCommand (all), an ICommand implementation which takes a task returning function and a predicate to run its logic
  • CommandBase (all), observable abstract ICommand base implementation

Messaging / messenger pattern

The article "Recommendations and best practices for implementing MVVM and XAML/.NET applications" explains how to use the MVVM classes.

Collections

Package: MyToolkit

Composition & Dependency Injection

Package: MyToolkit

  • CompositionContext, dependency injection container with support for property and constructor injection.
  • ServiceLocator, service locator to access service implementations in a decoupled way.

Paging & navigation

Package: MyToolkit.Extended

Paging Overview: Improved frame and page classes for Universal and Windows Phone Silverlight apps.

Universal apps (W8.1, WP8.1 and UWP)

Windows Phone Silverlight

Networking

Package: MyToolkit.Http and MyToolkit.Extended Http (all),

  • HTTP class with GZIP, POST FILE, POST form, authentication and timeout support.
  • WakeOnLan (WP, WinRT), class to send Wake-On-Lan (WOL) magic packets to devices
  • ClientBaseExtensions (WPF) used to authenticate an ASP.NET authenticated WCF service

XAML controls

Package: MyToolkit.Extended

  • DatePicker (WinRT) (only functionality, not user friendly, need better control)
  • DataGrid (WinRT)
  • ExtendedListPicker (WP), added TypedSelectedItems property which can be bound to ObservableCollection<T> not only ObservableCollection<object>
  • PivotExtensions (WP only): Attached property to disable the automatic margin on WP Pivot control.
  • Hamburger (UWP only): A hamburger control
  • HtmlView/ScrollableHtmlView (WP, WinRT): Render HTML with native controls for better performance then with a WebControl/WebView
  • ImageButton (WinRT), has Content, ContentPressed and IsTiltEnabled properties. Use these Content properties to set the vectorized image (eg generated by Metro Studio).
  • LongListSelector (WinRT): Native looking long list selector for Windows Phone (WinRT)
  • MtGridView (WinRT): GridView with scrolling and scrolled to end event and other features
  • MtListBox (WP, WinRT): ListBox with scrolling and scrolled to end event, InnerMargin, and other features
  • MtPivot (WinRT)
  • NativeLongListSelector (WP): Native looking/correctly styled LongListSelector which correctly works on WP7 and WP8.
  • NavigationList (WP, WinRT): ListBox with navigation event (with navigation item parameter)
  • PanAndZoomImage (WP)
  • PanAndZoomViewer (WP)
  • ScrollableItemsControl: Use this class instead of ListBox if you don't need support for selected item.
  • TextButton (WinRT), shows an icon (specified by Segue UI character) and a header
  • TimePicker (WinRT) (only functionality, not user friendly, need better control)
  • WatermarkedTextBox (SL, WP, WinRT): TextBox with watermark
  • YouTubeButton, see YouTube (WP, WinRT): Button with YouTube video preview and logic to play YouTube

XAML converters

Package: MyToolkit.Extended

User interface extensions and helpers

Package: MyToolkit.Extended

  • VisibilityManger (WinRT), shows and hides XAML controls depending on the screen width (useful for Windows Store apps to support the various screen states, portrait, landscape, snapped, etc.)
  • TextBinding (WP) provides an attached property to allow immediate updated text bindings to the TextBox and PasswordBox controls
  • Popups, helper classes to implement native looking popups in WP and WinRT
  • TiltEffect (WinRT), tilt effect like in Windows Phone Toolkit for WinRT

Multimedia

Package: MyToolkit.Extended

  • YouTube (WP, WinRT), play YouTube videos and get their MP4 links

Media

Package: MyToolkit.Extended

  • ImageHelper (WP, WinRT) Provides an attached Source property for the Image control with better performance and support for AuthenticatedUri (URI with basic authentication credentials)

Animation

Package: MyToolkit.Extended

Serialization

Package: MyToolkit and MyToolkit.Extended

Data

Package: MyToolkit

Storage

Package: MyToolkit and MyToolkit.Extended

  • ApplicationSettings (PCL but WinRT, WPF and WP only), simple class to access application settings.
  • StorageApplicationSettings, class to access application settings which are stored in files and use the DataContractSerializer or XmlSerializer.
  • FileUtilities (WinRT, WP), WriteAllText(Async) and ReadAllText(Async) methods

Events

Package: MyToolkit (most) and MyToolkit.Extended

  • EventUtilities
  • SingleEvent (WP, SL, WinRT) register an event which is called only once and automatically deregistres itself (mainly used to register anonymous delegates)
  • WeakEvent (WP, SL, WinRT) register weak events which are automatically deregistered if they are only referenced by callback target

Utilities

Package: MyToolkit (most) and MyToolkit.Extended

  • CodeContractExtensions, extension methods for checking method parameters with Code Contract support.
  • ColorUtilities, mix two colors, remove alpha from color, ToHex/FromHex
  • DependencyPropertyChangedEvent (WP, WinRT) register a property changed event on a dependecy property.
  • EnumerableExtensions, OrderByThenBy, DistinctBy, IsCopyOf, Shuffle, TakeRandom, MinObject, MaxObject, MiddleElements (for LINQ to objects)
  • StringExtensions, EscapeUriString, RemoveHtmlTags, RemoveHtmlLinks, RemoveHtmlWhitespaces, ConvertHtmlCharacters
  • StreamExtensions (WinRT, WP), ReadToEnd and ReadToEndAsync extension methods with IProgress support
  • ToastNotificationHelper (WinRT), shows a notification toast (enable capability in manifest)

Workflow Engine

Package: MyToolkit

Workflow Overview

In development...

ASP.NET MVC

Package: MyToolkit.AspNet.Mvc

  • CollectionEditorExtensions: Extension methods to implement an edit form for an entity with a sortable child collection (read this article for more information).
  • Bootstrap: Extension method to generate Bootstrap elements