Вы можете сделать свойство на стороне клиента для своего класса Team.
Все привязки для элементов управления, основанные на ItemsControl, привязываются непосредственно к отдельным объектам, отображаемым в списке, а НЕ к самому списку. То же самое относится и к вашей виртуальной машине: простое изменение ViewModel вам тоже не поможет. Вам нужно изменить сам объект, чтобы он содержал достаточно информации для объектов привязки, которые вы создаете в xaml.
Поскольку вы используете службы WCF RIA, вы можете создавать свойства на стороне клиента, которые действительно работают для вас. Надеюсь, вы абстрагируете свои службы RIA в библиотеки на стороне сервера и библиотеки на стороне клиента.
Просто сделайте часть своего класса Team в библиотеке на стороне клиента, где живет DataContext, и напишите код, подобный следующему:
public partial Team
{
public KeyPerson HeadCoach
{
get
{
if (this.PeopleInTeam != null && this.PeopleInTeam.Any())
{
return this.PeopleInTeam.FirstOrDefault(g => g.RelationshipType == "Coach"));
}
return null;
}
}
}
Тогда в вашей привязке вы можете просто привязать свойства в Team:
<data:DataGridTextColumn Binding="{Binding Name}" /> /*Team is implied as the object in each row is a Team*/
<data:DataGridTextColumn Binding="{Binding HeadCoach.Name}" />
<data:DataGridTextColumn Binding="{Binding HeadCoach.PhoneNumber}" />
Это ОЧЕНЬ распространенная техника. Это также причина того, что у нас есть доступ для написания кода на стороне клиента для классов, генерируемых службами RIA WCF.
Я читал ваши комментарии об использовании отдельного запроса для загрузки главного тренера. Возможно, вы захотите посмотреть на загрузку KeyPeople по тому же запросу, что и ваши команды. Вы можете использовать оператор .Include
на сервере для отправки ключевых людей.
Если это не представляется возможным решением, сделайте HeadCoach свойством {get;set;}
в своем коде ClientSide. Кроме того, так как WCF RIA является навигационной системой, если вы сделаете отдельный запрос в том же самом DataContext в качестве первого запроса, навигационная система ключевых людей уже будет настроена, таким образом, свойство вашего частичного класса будет автоматически работать.
Веселись!