2010-03-22 6 views
2

Je tente d'envelopper essentiellement le contenu d'un DataTemplate dans un ListViewGridViewColumn avec une bordure. Ce que je veux savoir, c'est s'il est possible de fournir un adorateur qui entourera ce modèle de sorte que je n'ai pas à spécifier la bordure dans chaque DataTemplate sur chaque colonne (ce que je fais maintenant). J'ai quelque chose comme ça, mais je sais que ce qui ne va pas:Envelopper ou orner wpf listview datatemplate

<Style TargetType="{x:Type ListBoxItem}"> 
    <Setter Property="TemplateContent"> 
    <Setter.Value> 
     <ControlTemplate> 
     <StackPanel> 
      <Border BorderBrush="Green" BorderThickness="1"> 
      <AdornedElementPlaceholder /> 
      </Border> 
     </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

Ce reproche au TemplateContent est pas un type valide. J'ai aussi essayé avec DataTemplate et cela ne fonctionne pas non plus (c'est compréhensible).

Je sais que je pourrais simplement créer un DataTemplate, mais le contenu de chaque colonne est différent. À tout le moins, il se lie à différents domaines. Je me demande s'il existe une solution utilisant une ressource dynamique, mais je n'en sais pas grand-chose. Merci pour votre aide

EDIT: Voici un exemple de mon ListView:

<ListView ItemsSource="{Binding Path=OrderLines}" 
      ItemContainerStyle="{StaticResource ResourceKey=ListViewItemContainerStyle}"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn> 
     <GridViewColumn.CellTemplate> 
      <DataTemplate> 
      <TextBox MaxWidth="30" Width="30" MaxLength="2" 
        Text="{Binding Path=Quantity,ValidatesOnDataErrors=True}" /> 
      </DataTemplate> 
     </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
    <GridView> 
    <ListView.View> 
</ListView> 

Essentiellement, je veux envelopper cette zone de texte dans le DataTemplate et d'autres éléments dans les colonnes supplémentaires.

Répondre

0

La propriété doit être "Modèle". Voir ici pour un exemple: http://msdn.microsoft.com/en-us/library/ms750821.aspx

+0

Cela ne semble pas fonctionner, je pense que parce qu'il remplace le modèle ListBoxItem/ListViewItem entier - de sorte que la boîte verte tourne autour de la ligne entière, pas autour de chaque cellule. – itowlson

+0

Je devrais mentionner que j'ai mal tapé et que le type de cible serait n'importe quel ListVIEWItem et non ListBoxItem. En tant que tel, je ne peux pas sembler obtenir cet exemple pour fonctionner. Cela fonctionnera pour les éléments d'une liste listée par GridViewColumns, mais tout ce que je vois c'est la bordure verte et le contenu est maintenant parti. Ma listview a des modèles personnalisés. Je vais mettre à jour la demande principale avec un échantillon du code. Comment aurais-je eu à appliquer ce style à des listes de lecture singulières (c'est-à-dire - quelle est la propriété pour lier la ressource statique sur la liste car ce n'est pas celltemplate). –