Как динамически вставить строки в сетку данных Silverlight 3 с разным расположением заголовка / столбца? - PullRequest
0 голосов
/ 14 июля 2009

Скажем, у меня есть элемент управления DataGrid из Silverlight 3, и я хочу динамически создать свободное пространство между двумя строками, чтобы показать больше деталей. Как я могу это сделать?

Header1 | Header2 | Header3 | Header4
-------------------------------------
Cell1     Cell2     Cell3     Cell4
Cell5     Cell6     Cell7     Cell8
Cell9     Cell10    Cell11    Cell12

например, должно стать:

Header1 | Header2 | Header3 | Header4
-------------------------------------
Cell1     Cell2     Cell3     Cell4
Cell5     Cell6     Cell7     Cell8
   Foo1    Foo2
   Foo3    Foo4
Cell9     Cell10    Cell11    Cell12

Обратите внимание, что две вновь вставленные "строки" могут иметь различное количество столбцов и могут быть различными типами элементов управления. Другими словами, вставленные элементы могут быть, возможно, еще одним отдельным элементом управления.

Возможно ли это даже с помощью элемента управления DataGrid? Возможно, у кого-то есть какая-то умная идея. Большое спасибо!

1 Ответ

0 голосов
/ 20 августа 2009

Вам понадобится коллекция класса типа (т.е. ячейка) со свойством .Foos collection, представленной в ячейке. (пример свойств в сокращенном виде)

Class Foo
   Property FooName as String
End Class

Class Cell
   Property CellName as String
   ReadOnly Property Foos as Generic.List(of Foo)
End Class

 <DataTemplate x:Key="MyTemplate">
   <TextBlock Text={Binding CellName}" />
   <StackPanel ItemSource="{Binding Foos}">
       <StackPanel.ItemTemplate>
           <DataTemplate>
               <TextBlock Text="{Binding FooName}" />
           <DataTemplate>
       <StackPanel.ItemTemplate>
   </StackPanel>
</DataTemplate>

И в вашей DataGrid для этих ячеек для CellTemplate может быть установлено значение MyTemplate. Для тех ячеек с пустой коллекцией Foos, Foos не будет отображаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...