Show Child Count in a DataGrid

I have an application with the following as part of the data model:

image

So an Account can have many Users and a user can belong to many Accounts. I wanted to show the Accounts in a DataGrid along with the number of Users that were linked to that account like show in the 3rd column here:

image

The way I did this is to use a converter to count the number of entities in each Account.xrefAccountsUser set.  The DataGrid is bound to Accounts and the the XAML for the 3rd column is:

 
<sdk:DataGridTextColumn  Header="Users" 
Binding="{Binding xrefAccountsUsers,
Converter={StaticResource setToCountConverter}}"
 />


The converter is where we count up the number of entities in the related entity set (xrefAccountsUsers in this case.)  I could not find a type that I could cast the value to that had a Count property, so I  ended up casting it to IEnumerable and then loop thru the set and I do a count manually.  There should never be very many accounts so performance isn’t an issue.

public class SetToCountConverter : IValueConverter

{

    public object Convert(object value,
                                Type targetType,
                                object parameter,
                                System.Globalization.CultureInfo culture)
    {

        int cnt = 0;

        IEnumerable set = value as IEnumerable;

        if (set == null)
            return "0";

        foreach (var item in set)
            cnt++;

        return cnt.ToString();
    }

    public object ConvertBack(object value,
       Type targetType,     
       object parameter,
       System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

Leave a Comment

Your email address will not be published. Required fields are marked *