Я использую сетку данных silverlight 3, и внутри нее я вкладываю связанные записи в другой элемент управления, используя детали строк (visibilitymode = visiblewhenselected).
Мне действительно нравится, как это работает, но я бы предпочел, чтобы сетка отображала детали строк при нажатии кнопки "+", подобно тому, как дерево будет расширяться при нажатии на узел.
Я попытался программно определить шаблон с помощью таких ресурсов:
<Grid.Resources>
<DataTemplate x:Key="EmptyTemplate">
<StackPanel>
<!--<TextBlock Text="Empty Template!!!" />-->
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="SongTemplate">
<StackPanel>
<AdminControls:ArtistSongControl x:Name="ArtistSongControl" />
</Stack>
</DataTemplate>
</Grid.Resources>
И в событии сетки LoadingRowDetails я бы выбрал, какой шаблон установить:
e.Row.DetailsTemplate = (DataTemplate)LayoutRoot.Resources["SongTemplate"];
Этот метод сработал, но я обнаружил, что у меня возникли проблемы со свертыванием шаблона сведений о предыдущих строках, и даже произошел сбой ie8 (не уверен, что это связано).
По сути, мне очень нравится, как работает сетка данных silverlight 3, и даже как реализован материал rowdetailstemplate. Я просто хотел бы отложить загрузку любых деталей, пока строка не будет расширена преднамеренно (как дерево). Все сторонние сетки, кажется, делают это, и Microsoft очень близка. У кого-нибудь есть идеи, как решить эту проблему?
Спасибо, Деннис