2010-05-10 17 views
10

Ich versuche, ein Benutzersteuerelement innerhalb einer WPF-Anwendung zu erstellen, die als DataTemplate für eine ListBoxItem dient. Der Benutzer steuert ein Raster mit 4 TextBlock s. Dieses Steuerelement enthält auch andere Formen und Bilder mehr für visuelle Hilfe als alles andere, so dass ich sie aus dem Code in dieser Frage aus Gründen der Klarheit weglassen.Verwenden Sie ein Benutzersteuerelement als DataTemplate innerhalb einer WPF-Anwendung

Wenn ich das Benutzersteuerelement auf meinem Hauptfenster.xaml ablege, kann ich sehen, dass das Steuerelement und die ordnungsgemäß gebundenen Felder auf den ersten Datensatz in der Datenquelle zeigen. Was ich tun möchte, ist, dass dieses Steuerelement mehrmals innerhalb eines Listenfelds oder eines Wrap-Panels für jeden Datensatz in der Datenbank gerendert wird.

Kann mir jemand einen Zeiger oder eine Probe zur Verfügung stellen, wie man eine Benutzerkontrolle als DataTemplate innerhalb der ListBox Kontrolle/anderen Verkleidung rendern lässt.

Bis zu diesem Punkt habe ich folgendes ohne Erfolg versucht: Vielen Dank im Voraus für irgendwelche Tipps.

<!--within Window.Resource --> 
<DataTemplate x:Key="myActivity"> 
     <local:ucActivityItm /> <!--usercontrol --> 
</DataTemplate> 

<!-- Listbox within the window --> 
<ListBox HorizontalAlignment="Stretch" ItemTemplate="{DynamicResource myActivity}" VerticalAlignment="Stretch"> 
<ListBoxItem> 
<!-- control also added for testing to ensure it rendered out--> 
<local:ucActivityItm /> 
</ListBoxItem>   
</ListBox> 

Antwort

13

Das DataTemplate ist nicht wirklich zu Ihrem ListBox zugeordnet ist. Es gibt drei Möglichkeiten:

1: Ersetzen Sie die Vorlage im Abschnitt Ressourcen mit

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <local:ucActivityItm /> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

im ListBox.
2:

<ListBox ... ItemTemplate="{StaticResource myActivity}"> 

3: Stellen Sie den Datentyp Parameter des DataTemplate oben, was auch immer der Inhalt Ihrer ListBox ist etwas verwandt.

<DataTemplate x:Key="myActivity" DataType="{x:Type ...}"> 

Normalerweise mache ich nur die erste, aber jede sollte funktionieren.

Verwandte Themen