Shawn Wildermuth

Author, Teacher, and Filmmaker
.NET Foundation Board Member

Phoney Windows Phone 7 Project Now Available!


Silverlight Logo

UPDATE: Phoney now has a NuGet package.  Search on NuGet to add Phoney to your project!

I started this project when I found I had a number of small classes that I'd built for my Windows Phone 7 application so I thought it was time to share. here is the information on the new library.  

It is currently in a very early Alpha stage, but I expect to have it at a release version by MIX 11 (Mid-April). Let me know what you think!

Project Description

This is a project that contains several classes and controls for use with Windows Phone 7 applications. There are plans for:

  • Standard Set of Converters
  • Several Controls
  • BitlyHelper
  • TwitterHelper
  • PhoneLogger
  • ObservableObject
  • FadingMessage class

Exposing all the Phone Resources (e.g. PhoneTextSizeLarge) as staticly typed accessors

Current Version is 0.1.

Only the following features are included:

  • BitlyHelper
  • PhoneLogger
  • FadingMessage
  • ObservableObject
  • Phone Resources


BitlyHelper class

Simple class for shortening URI's using your own API Key/username:

BitlyHelper.Shorten("", (result, error) =>
    if (error != null)
      MessageBox.Show(string.Concat("Error Shortening Url: ", 
      MessageBox.Show(result, 3000);

FadingMessage class

This class is to create messages that show up as a popup that fades in and fades out. For simple messages:


You can control the look and contents of the message by supplying your own UI objects:

FadingMessage msg = new FadingMessage()
  MessageToShow = theMessage,
  VerticalAlignment = VerticalAlignment.Top,
  HorizontalAlignment = HorizontalAlignment.Right
msg.Show(3000); // 3 seconds

PhoneLogger class

This class is to save a simple log file in Isolated Storage and can retrieve the contents of the log on demand:

PhoneLogger.LogError("Test Logging Message");

var log = PhoneLogger.LogContents;

ObservableObject class

This is an abstract class that supports the INotifyPropertyChanged interface for ease of hand-building objects that need observation.

public class MyObject : ObservableObject

Phone Resources

All of the known phone resources have accessors to give you strongly-typed access to the phone-based resources. Static Classes include:


  • PhoneColors
  • PhoneBrushes
  • PhoneFontSizes
  • PhoneFontFamilies
  • PhoneTextStyles
  • PhoneThicknesses


var theContainer = new Border()
  Background = PhoneBrushes.PhoneContrastBackgroundBrush,
  BorderBrush = PhoneBrushes.PhoneBorderBrush,
  BorderThickness = PhoneThicknesses.PhoneBorderThickness,
  CornerRadius = new CornerRadius(5)

theContainer.Child = new TextBlock()
  Margin = PhoneThicknesses.PhoneMargin,
  TextWrapping = TextWrapping.Wrap,
  Style = PhoneTextStyles.PhoneTextNormalStyle,
  Foreground = PhoneBrushes.PhoneAccentBrush,
  Text = message

In addition a PhoneTheme class that gives you a simple way to test for which theme (light or dark) the phone is using:

if (PhoneTheme.IsDarkTheme)
  // Change something because it's dark
  // Change it because it's light


What do you think?