Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

A Simple Silverlight Object Viewer

0.00/5 (No votes)
29 Jan 2012 1  
A simple Silverlight object viewer

Sometimes when you're making a Windows phone 7 rest client, you just want to look at some of the returned data to see what's there. You can wire up some UI or use tracing. Maybe some breakpoints. But it's also nice to be able to drop something into the UI that you can access easily and as needed at runtime. The WinForms object browser for instance is handy for debugging things at runtime, within the app without a debugger or a designed UI. This little widget isn't as fully functional as that, but can be helpful in a similar way. Drop it somewhere in the UI and set its DataContext property and all public readable properties will be listed with name and value.

First some XAML:

<UserControl x:Class="GoogleAuthDemo.ObjectBrowser"<br />    
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:GoogleAuthDemo"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="480" d:DesignWidth="480">

With a smidge of C# to create a name value pair collection, given an object's properties:

public class ObjectPropertiesConverter : IValueConverter<br />    {
    public object Convert(object value, Type targetType, 
            object parameter, CultureInfo culture)
    {
        if (value == null)
            return null;
        return from p in value.GetType().GetProperties()
            where p.CanRead
               select new KeyValuePair<string, string>
               (
                  p.Name,
                  p.GetValue(value, null) != null ? 
        p.GetValue(value, null).ToString() : null
               );                   
    }
    public object ConvertBack(object value, Type targetType, 
            object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}


License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here