2009-07-16 13 views
0

Pourriez-vous m'aider? J'ai besoin d'un TreeView avec un CheckBox à chaque article. Je ne peux pas l'obtenir, j'ai commencé comme ceci, et semble absolument absolument mauvais:WPF TreeView avec style personnalisé

<TreeView Grid.Row="0" Grid.Column="0" Name="StagesTreeView" Margin="5"> 
     <TreeView.Resources> 
      <Style TargetType="{x:Type TreeViewItem}"> 
       <!-- <Setter Property="?????"> WHAT SHOULD BE HERE? 
        <Setter.Value> 

        </Setter.Value> 
       </Setter> --> 
      </Style> 
     </TreeView.Resources> 
    </TreeView> 

Montrez-moi pls. quelques exemples simples

UPD: Oh ... Je pense que je besoin d'un ControlTemplate, mais je ne sais pas encore comment faire

UPD2: Mon Dieu, autant que je suis dans l'approfondissement de ce que je suis en train désorienté. Dois-je utiliser l'extension de balisage RelativeSource quelque part ici? Quelqu'un m'aide! UPD3: Maintenant, cela ne fonctionne pas comme un TreeBox - Je ne peux pas développer \ réduire les éléments, même si j'ai légèrement avancé - je peux voir les cases à cocher.

 <TreeView Grid.Row="0" Grid.Column="0" Name="StagesTreeView" Margin="5"> 
     <TreeView.Resources> 
      <Style x:Key="{x:Type TreeViewItem}" TargetType="TreeViewItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate> 
          <Grid Margin="2"> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto"/> 
            <RowDefinition Height="*"/> 
           </Grid.RowDefinitions> 
           <StackPanel Grid.Row="0" Orientation="Horizontal"> 
            <CheckBox IsChecked="{Binding Path=IsActive}"/> 
            <TextBlock Text="{Binding Path=Alias.UserName}"/> 
           </StackPanel> 
           <ItemsPresenter Grid.Row="1"/> 
          </Grid> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

     </TreeView.Resources> 
    </TreeView> 

Répondre

3

Quelque chose comme ceci:

<TreeView Grid.Row="0" Grid.Column="0" Name="StagesTreeView" Margin="5"> 
    <TreeView.Resources> 
     <Style TargetType="TreeViewItem"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="TreeViewItem"> 
         <StackPanel Orientation="Horizontal"> 
          <CheckBox Margin="2" Name="checkBox1"/> 
          <Border Padding="2"> 
           <ContentPresenter Name="PART_header" ContentSource="Header"/> 
          </Border> 
         </StackPanel> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </TreeView.Resources> 
</TreeView> 
+0

Qu'est-ce que ContentPresenter? Je ne reçois toujours pas ... – Agzam

+0

ContentPresenter est un élément Framework qui représente l'espace réservé pour présenter les données réelles d'un TreeViewItem (et de nombreux autres contrôles). Tous les autres contrôles qui font partie d'un modèle sont là pour créer un environnement visuel cretain, comme les frontières, les grilles, etc., mais le ContentPresenter est où l'élément de données réel ira quand le TreeViewItem essaye de le rendre. –

2

Vous trouverez peut-être ce utile: Working with Checkboxes in the WPF TreeView

+0

On dirait idéal pour moi. Attends, je vais l'examiner. Je vous remercie! – Agzam

+0

Je ne peux pas régler cela. Quel programmeur moche je suis. Ces choses WPF difficile et trop embrouillé pour moi en ce moment. – Agzam