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 *