2010-05-01 7 views
4

Je lie TreeView. Ma raison est que le niveau d'arborescence 0 est non sélectionnable. Lorsque je clique sur le niveau 0 treeviewitem, l'élément actuel doit être réduit et le premier élément enfant doit être sélectionné.Comment créer TreeViewItem non sélectionnable dans WPF

├ Item 1 //<- level 0. this item must be unselectable 
├─ Child Item 11 //<- level 1 
├─ Child Item 12 
├ Item 2 //<- level 0. When i click this item, that is automatically collapse 
├─ Child Item 21 
├─ Child Item 22 

Comment faire cela en utilisant le style?

Répondre

7

Je le ferais dans mon modèle de vue. Le modèle de vue pour niveau 0 articles aurait:

public bool IsSelected 
{ 
    get { return false; } 
    set 
    { 
     // error checking is omitted 
     Children[0].IsSelected = value; 

     // let WPF know that IsSelected may have changed from what it's expecting 
     this.Dispatcher.BeginInvoke((ThreadStart)delegate 
     { 
      this.OnPropertyChanged(() => this.IsSelected); 
     }); 
    } 
} 

Votre XAML ressemblerait à ceci:

<TreeView> 
    <TreeView.ItemContainerStyle> 
     <Style TargetType="TreeViewItem"> 
      <Setter Property="IsSelected" Value="{Binding IsSelected}"/> 
     </Style> 
    </TreeView.ItemContainerStyle> 
</TreeView> 

Maintenant, chaque fois que l'utilisateur clique sur un niveau un élément, la machine virtuelle refuseront d'être sélectionnés et Au lieu de cela, sélectionnez son premier élément enfant.

Vous pouvez utiliser exactement la même technique pour gérer vos besoins en matière de niveaux d'effondrement.

Questions connexes