2009-03-13 6 views
2

Entschuldigung, wenn dies eine grundlegende Frage ist, aber wie kann ich ein ItemTemplate, das ich für eine ListBox habe, nehmen und es in die Ressourcen für das Fenster einfügen, so dass mehr als eine ListBox es benutzen kann.Wie bette ich das ItemTemplate für eine wpf ListBox in die Ressourcen des Windows ein?

Hier einige XAML:

<Window x:Class="Example"> 
    <Window.Resources> 
     <DataTemplate x:Key="dtExample"> 
      <ListBox.ItemTemplate> 
      // styles go here... 
      </ListBox.ItemTemplate> 
     </DataTemplate> 
    </Window.Resources> 
    <ListBox ItemTemplate="{StaticResource dtExample}"> 
    // items go here... 
    </ListBox> 
</Window> 

Dieses eine wirft „Befestigt Eigenschaft hat keine Setter“ Entwurfszeitfehler. Ich habe Teile des Codes entfernt, von denen ich glaube, dass sie aus Gründen der Kürze nicht wichtig wären.

Dank

Antwort

4

nur Ihre itemtemplate zu Ihrem Fenster Ressource hinzufügen und einen Schlüssel hinzu:

<Window.Resource> 
<DataTemplate x:Key="myTemplate"> 
    .... 
</DataTemplate> 
</Window.Resources> 

und dann mit so etwas wie dies gilt:

<ListBox ItemTemplate="{StaticResource myTemplate}"> 
... 
</ListBox> 
+0

Ich habe versucht, meine ListBox.ItemTemplate XAML innerhalb einer DataTemplate, aber bekommen die rote Squiggly Fehler, Attached-Eigenschaft hat keine Setter. Ideen? –

+0

Nun, die ItemTemplate-Eigenschaft eines ItemsControl ist eine Datatemplate. Wenn Sie etwas Code/Markup bereitstellen, wäre es viel einfacher, Ihnen zu helfen. nur sagen, Sie bekommen einen Fehler wird nicht helfen;) –

+0

@Joachim Kerschbaurner: Du hast Recht! –

0

ich glaube, das Problem ist, das sollten Sie x: Schlüsseleigenschaften in Ihren Ressourcen anstelle des x: Name ..

Ändern Sie das, und es funktioniert wie ein Charme :)

+0

Ich habe es in einen Schlüssel geändert, und das hat verhindert, dass das ItemTemplate in der XAML ausgegraut wurde, aber ich bekomme immer noch den Fehler: Die anfügbare Eigenschaft 'ItemTemplate' wurde im Typ 'ListBox' nicht gefunden. ... und ich habe die ItemTemplate = "{StaticResource myTemplate}" dort, wie oben beschrieben. –

0

Haben Sie die folgenden Tags in Ihrer Window-Klasse?

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
+0

Ja, in der Tat. Danke an alle, die das gelesen haben! Yay Gemeinschaft! –

+0

Hmm wenn es immer noch nicht funktioniert .. kannst du vielleicht deine ganze xaml Datei posten? – Arcturus

+0

(Das heißt, ja, ich habe diese Tags in meiner Window-Klasse). :) –

2

Ihnen zur Verfügung gestellten den folgenden Code:

<DataTemplate x:Key="dtExample"> 
     <ListBox.ItemTemplate> 
     // styles go here... 
     </ListBox.ItemTemplate> 
    </DataTemplate> 

aber das wird nicht funktionieren. Sie können nicht liefern <ListBox.ItemTemplate> direkt in Ihrer Vorlage. Du brauchst das hier nicht. Erstellen Sie einfach ein einfaches Datamaplate und es sollte funktionieren.

1

Ich weiß, dass der Beitrag zu alt ist, um für den Autor interessant zu sein, dennoch kann ich für diejenigen interessant sein, die das gleiche Problem haben und es googeln. Wie ich das Problem sehen kann, sollten Sie ListBox.ItemTemplate in ListBox verwenden. Zum Beispiel, <ListBox ...><ListBox.ItemTemplate> ... </ListBox.ItemTemplate></ListBox>

+0

Das war in der Tat mein Problem. Vielen Dank. –