2009-03-13 4 views
2

Désolé, c'est une question de base, mais comment puis-je prendre un ItemTemplate que j'ai pour un ListBox, et le mettre dans les ressources pour la fenêtre afin que plus d'un ListBox puisse l'utiliser.Comment intégrer le ItemTemplate pour un ListBox wpf dans les ressources de la fenêtre?

Voici quelques 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> 

Ce jette un « bien attaché n'a pas setter » erreur de la conception. J'ai enlevé des portions de code que je ne pensais pas importer, par souci de brièveté.

Merci

Répondre

4

suffit d'ajouter votre itemtemplate à la ressource de votre fenêtre et ajoutez une clé:

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

puis l'appliquer avec quelque chose comme ceci:

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

J'ai essayé de mettre mon xaml ListBox.ItemTemplate à l'intérieur d'un DataTemplate, mais j'ai obtenu l'erreur rouge, la propriété attachée n'a pas de setter. Des idées? –

+0

bien, la propriété ItemTemplate d'un ItemsControl EST un datatemplate. Si vous fournissez du code/balisage, il sera beaucoup plus facile de vous aider. le simple fait de dire que vous obtenez une erreur ne vous aidera pas;) –

+0

@Joachim Kerschbaurner: Vous avez raison! –

0

Je pense que le problème est que vous devez x: Propriétés clés dans vos ressources au lieu du x: Nom ..

Changez cela, et cela fonctionnera comme un charme :)

+0

Je l'ai changé en une clé, et cela a arrêté le ItemTemplate d'être grisé dans le xaml, mais j'ai toujours l'erreur: La propriété attachable 'ItemTemplate' n'a pas été trouvée dans le type 'ListBox'. ... et j'ai le ItemTemplate = "{StaticResource myTemplate}" comme décrit ci-dessus. –

0

Avez-vous les balises suivantes dans votre classe Window?

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

Oui, en effet. Merci à tous ceux qui lisent ceci! Communauté Yay! –

+0

Hmm si cela ne fonctionne toujours pas .. pouvez-vous poster votre fichier xaml entier? – Arcturus

+0

(C'est-à-dire, oui, j'ai ces tags dans ma classe Window). :) –

2

vous a fourni le code suivant:

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

mais cela ne fonctionnera pas. vous ne pouvez pas fournir <ListBox.ItemTemplate> directement dans votre modèle. tu n'en as pas besoin ici. Il suffit de créer un datatemplate simple et cela devrait fonctionner.

1

Je sais que le post est trop vieux pour être intéressant pour l'auteur, mais je peux être intéressant pour ceux qui ont le même problème et google. Comme je peux voir le problème est que vous devriez utiliser ListBox.ItemTemplate dans ListBox. Par exemple, <ListBox ...><ListBox.ItemTemplate> ... </ListBox.ItemTemplate></ListBox>

+0

C'était effectivement mon problème. Merci. –