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();
}
}
CodeProject