DataBinding a single HubTile

by CameronM 27. February 2012 18:13

A little while ago I did a series of posts showing you how to build a Metro-styled start page for our app using HubTile controls from the Windows Phone Toolkit. In those examples, we built up the structure of the page in XAML alone. This approach may be fine for a static list of items, such as a page used for navigating to other pages in your app, but it becomes problematic when we want to display dynamic data, such as values created by the user.

To add data binding to the single HubTile control we created in this earlier post, we need to make a few changes to the XAML and C# code-behind. The first step is to create a new class representing the object we want to bind to the HubTile. In this example we'll just create a simple object HubTileItem with the required properties, but this could be any relevant business object you want to display.

public class HubTileItem
{
    public string Title { getset; }
    public string Message { getset; }
    public Uri ImageUri { getset; }
 
}

If you're familiar with XAML DataBinding in general, the changes to our HubTile control will be pretty straightforward. Basically we want to replace the hardcoded values for Title, Message and Source with their appropriate properties from their DataSource. We'll also give our HubTile a name, so that we can refer to it from our C# code-behind.

<toolkit:HubTile Margin="12,12,0,0" x:Name="MyHubTile"                                            
            Title="{Binding Title}"
            Message="{Binding Message}"
            Source="{Binding ImageUri}">
</toolkit:HubTile>

The last step is to create a new object of type HubTileItem and assign it as the DataContext for the HubTile control. To do this, we'll override the OnNavigatedTo event and include the code to create and assign the HubTileItem.

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    HubTileItem item = new HubTileItem 
    { 
        Title = "Sam", 
        Message = "Yosemite Sam", 
        ImageUri = new Uri("/Assets/Images/Yosemite-Sam.jpg"UriKind.Relative) 
    };
 
    MyHubTile.DataContext = item;
 
    base.OnNavigatedTo(e);
}

Run your app and your newly data bound HubTile should display exactly the same as it did before.

Tags: , ,

Windows Phone 7