2008-10-30 15 views

cevap

2

yapmak için

Teşekkür ... böylece ağaç için stil geçersiz kılmak gerekir. İdeal olarak, üst düzey düğümleriniz için iki tip treeview öğesi (klasörler varsaymak) ve sadece çocuklar için bir tane daha olacak, o zaman ağaçtaki her bir öğe türünün nasıl davrandığını tanımlayabilmeniz gerekir. Bu nedenle, her öğe türü için bir stil oluşturun, daha sonra klasör düğümü için basitçe hiçbir şey yapmamak için tetikleyiciyi seçin. Eğer bir de seçilmeyen öğe :(

+1

ancak ağaç görünümünde üst düzey düğümün semantik olarak seçilmesini nasıl önlersiniz? gerçeği saklıyor tegory görsel stilleri ile seçilebilir yeterli olmayabilir –

0

seçili olmayan düğümler için kapsayıcının Odaklanabilir Özelliklerini (TreeViews for TreeViews) false olarak ayarlayan her bir öğe türü için stiller,

5

Define tıkladığınızda

public class TreeViewItemHelper 
{ 
    public static bool GetIsSelectable(TreeViewItem obj) 
    { 
     return (bool)obj.GetValue(IsSelectableProperty); 
    } 

    public static void SetIsSelectable(TreeViewItem obj, bool value) 
    { 
     obj.SetValue(IsSelectableProperty, value); 
    } 

    public static readonly DependencyProperty IsSelectableProperty = 
     DependencyProperty.RegisterAttached("IsSelectable", typeof(bool), typeof(TreeViewItemHelper), new UIPropertyMetadata(true, IsSelectablePropertyChangedCallback)); 

    private static void IsSelectablePropertyChangedCallback(DependencyObject o, DependencyPropertyChangedEventArgs args) 
    { 
     TreeViewItem i = (TreeViewItem) o; 
     i.Selected -= OnSelected; 
     if(!GetIsSelectable(i)) 
     { 
      i.Selected += OnSelected; 
     } 
    } 

    private static void OnSelected(object sender, RoutedEventArgs args) 
    { 
     if(sender==args.Source) 
     { 
      TreeViewItem i = (TreeViewItem)sender; 
      i.IsSelected = false; 
     } 
    } 
} 

Ne yazık ki hala eski seçimi kaybetmek: en kısa sürede seçilip seçilmediğini gibi bir TreeViewItem seçimini kaldırmak olacak ben ekli tesiste yazdım

İlgili konular