Letztes mal habe ich kurz beschrieben was man mit einer Listbox und Templating in Silverlight so machen kann. Wenn man allerdings keine Auswahl Möglichkeit braucht, kann man auch das schlankere Itemscontrol (übrigens erbt Listbox davon) verwendet werden.
Die Daten werden als Liste in einer Klasse erzeugt.
Public Class personen
Inherits List(Of person)
Public Sub New()
Add(New person With {.alter = 27, .Firma = "ppedv ag", .Name = "Hannes"})
Add(New person With {.alter = 32, .Firma = "ppedv ag", .Name = "Andreas"})
Add(New person With {.alter = 23, .Firma = "ppedv ag", .Name = "Bernhard"})
Add(New person With {.alter = 45, .Firma = "ppedv ag", .Name = "Stefan"})
Add(New person With {.alter = 12, .Firma = "ppedv ag", .Name = "Arnold"})
End Sub
End Class
Diese Daten werden deklarativ instanziert und gebunden. Nicht weil es nötig wäre, sondern schlicht weil es möglich ist. Das folgende passiert dann auch in der XAML Datei
... xmlns:local="clr-namespace:KoelnSL">
<UserControl.Resources>
<local:personen x:Key="personen"></local:personen>
</UserControl.Resources>
Ein positver Nebeneffekt ist, das die Bindung auch in Blend und Visual Studio 2010 zur Entwurfszeit voll sichtbar ist.
Im XAML werden dann die drei Templates definiert
<ItemsControl Width="100"
ItemsSource="{Binding Source={StaticResource personen}}">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<Border BorderBrush="BlueViolet" BorderThickness="1" CornerRadius="10">
<ItemsPresenter/>
</Border>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Background="SkyBlue" Margin="5"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" Height="20" Width="50" Margin="4">
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>