2009-07-14 11 views
0

Angenommen, ich habe das Steuerelement DataGrid von Silverlight 3 und möchte dynamisch zwischen zwei Zeilen freien Speicherplatz erstellen, um weitere Details anzuzeigen. Wie kann ich das machen?Wie können Sie Zeilen in Silverlight 3-Datagrids dynamisch mit einem anderen Kopfzeilen-/Spaltenlayout einfügen?

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

zum Beispiel wird zu:

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

Beachten Sie, dass die beiden neu eingefügten „Reihen“, unterschiedliche Spaltenanzahl aufweisen und verschiedene Arten von Kontrollen sein. Mit anderen Worten, die eingefügten Gegenstände können möglicherweise eine andere einzelne Kontrolle sein.

Ist dies sogar mit dem DataGrid-Steuerelement möglich? Vielleicht hat jemand eine schlaue Idee. Vielen Dank!

Antwort

0

Sie benötigen eine Sammlung der Typklasse (d. H. Zelle) mit einer Eigenschaft .Foos-Sammlung, die auf der Zelle verfügbar ist. (Beispiel Immobilien in kurzer Hand)

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> 

Und auf Ihrem Datagrid für jene Zellen, könnten Sie die Celltemplate zu MyTemplate gesetzt haben. Für diese Zellen mit einer leeren Foos-Sammlung werden die Foos nicht angezeigt.

Verwandte Themen