Andrew Connell [MVP SharePoint]
1741 Posts |  46 Articles |  5310 Comments
.NET  |  MCMS  |  SharePoint  |  Office System
Andrew Connell's RSS Feed    
AC's Blog Quick Links
SharePoint Quick Links
Article Categories
Archives
May, 2012 (3)
April, 2012 (4)
March, 2012 (4)
February, 2012 (4)
January, 2012 (12)
December, 2011 (6)
November, 2011 (3)
October, 2011 (17)
September, 2011 (8)
August, 2011 (6)
July, 2011 (7)
June, 2011 (13)
May, 2011 (9)
April, 2011 (15)
March, 2011 (1)
February, 2011 (6)
January, 2011 (5)
December, 2010 (11)
November, 2010 (6)
October, 2010 (12)
September, 2010 (5)
August, 2010 (4)
July, 2010 (5)
June, 2010 (6)
May, 2010 (11)
April, 2010 (11)
March, 2010 (9)
February, 2010 (9)
January, 2010 (3)
December, 2009 (10)
November, 2009 (15)
October, 2009 (15)
September, 2009 (7)
August, 2009 (4)
July, 2009 (10)
June, 2009 (8)
May, 2009 (2)
April, 2009 (9)
March, 2009 (6)
February, 2009 (16)
January, 2009 (6)
December, 2008 (12)
November, 2008 (12)
October, 2008 (27)
September, 2008 (13)
August, 2008 (14)
July, 2008 (14)
June, 2008 (12)
May, 2008 (23)
April, 2008 (12)
March, 2008 (15)
February, 2008 (13)
January, 2008 (12)
December, 2007 (10)
November, 2007 (8)
October, 2007 (15)
September, 2007 (20)
August, 2007 (21)
July, 2007 (16)
June, 2007 (8)
May, 2007 (25)
April, 2007 (16)
March, 2007 (18)
February, 2007 (18)
January, 2007 (12)
December, 2006 (16)
November, 2006 (13)
October, 2006 (18)
September, 2006 (22)
August, 2006 (27)
July, 2006 (23)
June, 2006 (23)
May, 2006 (23)
April, 2006 (9)
March, 2006 (17)
February, 2006 (15)
January, 2006 (23)
December, 2005 (31)
November, 2005 (32)
October, 2005 (38)
September, 2005 (53)
August, 2005 (30)
July, 2005 (63)
June, 2005 (30)
May, 2005 (59)
April, 2005 (29)
March, 2005 (74)
February, 2005 (27)
January, 2005 (22)
December, 2004 (32)
November, 2004 (42)
October, 2004 (39)
September, 2004 (20)
August, 2004 (14)
July, 2004 (27)
June, 2004 (40)
May, 2004 (5)
April, 2004 (6)
March, 2004 (16)
February, 2004 (26)
January, 2004 (23)
December, 2003 (7)
November, 2003 (14)
October, 2003 (20)
September, 2003 (4)
Post Categories



Managed Windows Shared Hosting

Recently I ran into a little challenge recently on a Silverlight 3 project using the SharePoint 2010 Client Object Model (ClientOM). I wanted to bind a collection of list items I was getting back from SharePoint to a list box. I wanted to have a way to easily use the elegant data binding syntax in Silverlight without having to write managed code… something I could reuse over and over in a few projects.

The challenge is that the data in a SharePoint list item as seasoned SharePoint developers know is in a named collection. For instance, if you want the DueDate field, you access it using the SPListItem[“DueDate”].Tostring() syntax (ListItem[“DueDate”].ToString() with the ClientOM). Unfortunately the binding syntax in Silverlight isn’t very friendly for this type of data.

Thankfully there is a capability in Silverlight (and WPF) that allows you to create converters. Basically a converter takes in an object, the thing being bound to the control, and returns back another object. Once this converter is registered, you can then reference it in your data binding syntax in XAML.

Custom Converter

The first thing I did was write the code for the converter and drop it in the project. As you can see from the code below, I first check to see if there is content passed in during data binding and also default the field to show as “Title”. This is done by checking a parameter that is passed into the method (more on this in the XAML data binding in a moment). I then check to see if the name contains the prefix of “Lookup.”. If so, I do some special stuff to get the value from a lookup field, otherwise I just grab the data and return it back as a string.

SL3Binding-1

In order to use this converter, you need to register it in the XAML page you’re going to use it in. Since I use it in multiple places in this project I’m doing, I did this in the App.xaml file:

SL3Binding-2

Data Binding XAML

With everything in place, I then write the pieces that fetched the data from SharePoint using the ClientOM and then bound it to the page’s DataContext property. Nothing fancy there… what I want to show you is the data binding syntax. When I data bound the ClientOM ListItem object I want to use my custom converter. I also want to pass in a parameter telling the converter which field to use.

In the following screenshot you can see how I’ve registered the converter for the Text property on both TextBox controls. Notice how one is using the Price field (which you’d get on the server like this: SPListItem[“Price”]) and a lookup field in the second (SPListItem[“Category”]).

SL3Binding-3

posted on Tuesday, February 16, 2010 4:48 PM

Feedback

# re: Data Binding SharePoint 2010 List Items in Silverlight 3 2/17/2010 6:46 AM Fred Morrison
Gravatar This is quite an admission that, once again, Microsoft's poor planning makes it extremely difficult to use one part of their technology stack with another part. Your article on how to create a "shim" to overcome the problem is yet another example of being forced to"bolt on" a solution instead of using existing "built in" features.

# re: Data Binding SharePoint 2010 List Items in Silverlight 3 2/17/2010 11:15 AM AC [MVP MOSS]
Gravatar Fred-
Wow... that's quite damming. Sounds like you don't know SharePoint very well... the reason the fields are in named collections is because they are created by end users. The reason you need this is because they are not strongly typed properties... I don't know of another databinding technique that doesn't use strongly typed properties.

If anything this shows the flexibilty baked into the platforms so you can extend them to do what you want.

# re: Data Binding SharePoint 2010 List Items in Silverlight 3 2/18/2010 1:21 PM Yang
Gravatar I am curious if you use RESTful service of sharepoint 2010, won't that not give you strong typed properties you need for data binding?

# re: Data Binding SharePoint 2010 List Items in Silverlight 3 2/19/2010 10:01 AM Yang
Gravatar you can also use REST to data bind list items and less coding bit.ly/awkimS

# re: Data Binding SharePoint 2010 List Items in Silverlight 3 2/19/2010 9:20 PM AC [MVP SharePoint]
Gravatar Yang-
Sure you could, but if you wanted to use the Client OM instead of the REST interface for various reasons (as REST can't do eveyrthing the Client OM can do)... this solution is for those folks.

Post Feedback

Title:
Name:
Email:
(email will not be displayed)
Url:
Comments: 
Please add 8 and 7 and type the answer here:    
All Comments Are Filtered & Moderated
Unfortunately comment spammers are just too effecient and are constantly dirtying up blogs with irrelevant and unwanted comments trying to improve their standing on search engines. All comments on this blog are moderated. I do not censor comments, but I don't approve comments with vulger language or those soliciting products. Most of the time comments are approved within a few hours of being submitted with the only exception when I'm traveling.

Why are you asking for my email address?
The only reason I'm asking for your email address, which isn't required to submit a comment, is to provide a gravatar if you've created an account for yourself and associated your email address with a small image. If you have a gravatar created for the email address you submit, it will appear next to your comment. Otherwise nothing will appear.

What is a gravatar?
A gravatar is a "globally recognized avatar." You can get more information about gravatars, as well as create your own for free, at www.gravatar.com. You can also view my gravatar here.


Copyright © 2003 - 2012 Andrew Connell
Creative Commons License 
This work is licensed under a Creative Commons License

 
SharePoint Training
Looking for SharePoint 2010 training for developers, administrators, power users, information workers, end users & web designers? Look no further! My company, Critical Path Training offers the best SharePoint training around! We offer public & private classes both as in-person instructor-loed hands-on classes and online classes. Check out our schedule and course catalog for all the ways we can get you going on your SharePoint path!