2010-07-06 5 views
1

Je le code XML suivant être mis sur mon TreeView:problèmes avec ItemContainerStyle sur un Treeview

<Root Value="YES"> 
<Child Name="Test"> 
<Sibling Data="Yes"> 
    <Last UserData="1"/> 
</Sibling> 
<Sibling Data="No"/> 
</Child> 
<Child Name="Test2"/> 
</Root> 

et j'ai mis le code suivant dans ma fenêtre:

<Window.Resources> 
    <XmlDataProvider x:Key="dataProvider" XPath="Root" Source="C:\XML.xml" /> 

    <HierarchicalDataTemplate DataType="Root" ItemsSource="{Binding XPath=*}"> 
     <TextBlock Text="{Binding [email protected]}" /> 

     <HierarchicalDataTemplate.ItemContainerStyle> 
     <Style TargetType="{x:Type TreeViewItem}"> 
      <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate> 
       <Border Background="Blue"> 
        <ContentPresenter/> 
       </Border> 
       </ControlTemplate> 
      </Setter.Value> 
      </Setter> 
     </Style> 
     </HierarchicalDataTemplate.ItemContainerStyle> 
    </HierarchicalDataTemplate> 

    <HierarchicalDataTemplate DataType="Child" ItemsSource="{Binding XPath=*}"> 
     <TextBlock Text="{Binding [email protected]}" /> 
    </HierarchicalDataTemplate> 

    <HierarchicalDataTemplate DataType="Sibling" ItemsSource="{Binding XPath=*}"> 
     <TextBlock Text="{Binding [email protected]}" /> 
    </HierarchicalDataTemplate> 
    </Window.Resources> 

    <Grid> 
    <TreeView Margin="12" x:Name="trv" 
     ItemsSource="{Binding Source={StaticResource dataProvider}}" /> 
    </Grid> 

Je voudrais d'avoir un contrôle des frontières enrouler autour de tous les sous-éléments pour chaque nœud comme dans cette image:

http://www.hardcodet.net/uploads/2008/03/tree-dialogik.png

En d'autres termes, vous remarquerez dans l'image que j'ai liée à, le nœud parent dialogik.Memory a une bordure gris foncé qui le contourne et autour de ses enfants. C'est l'effet que je veux atteindre.

Que dois-je changer dans mon code pour le faire fonctionner correctement ???

Merci!

+0

Voir aussi http://stackoverflow.com/questions/14142510/hierarchicaldatatemplate-not-working - il a un peu d'exemple d'utilisation des expandeurs. – jdpilgrim

Répondre

1

Ce n'est pas possible avec TreeView. Vous pouvez utiliser un Expander bien, voir ici:

http://msdn.microsoft.com/en-us/library/system.windows.controls.expander.aspx

..et puis liez similaire: vous auriez un ItemsControl qui émet un Expander pour chaque élément, et l'extension serait alors contient un autre ItemsControl pour les éléments enfants, récursivement.

Espérons que ça aide!

+0

J'espère vraiment que vous obtenez ce commentaire 3 ans plus tard. J'ai exactement le même problème que OP, mais je ne sais pas comment mettre en œuvre votre suggestion. J'ai besoin de mettre une bordure autour de tous les enfants pour certains nœuds. Pouvez-vous modifier votre réponse pour le démontrer? –