none
Silverlight使用HierarchicalDataTemplate多层式实现treeview后,如何获取它所选中的值? RRS feed

  • 问题

  • 首先,来个五级菜单:
    public class First   
    {        
            public First()        
            {            
                      Seconds = new ObservableCollection<Second>();        
            }         
            public string Name { get; set; }        
            public string Url { get; set; }        
            public string Subject { get; set; }        
            public ObservableCollection<Second> Seconds { get; set; }   
    }
       
    public class Second   
    {        
            public Second()        
            {            
                     Thirds = new ObservableCollection<Third>();      
            }         
            public string Name { get; set; }        
            public string Url { get; set; }        
            public string Subject { get; set; }        
            public ObservableCollection<Third> Thirds { get; set; }   
    }     
    public class Third   
    {        
            public Third ()         
            {            
                    Forths=new ObservableCollection<Forth> ();        
            }        
            public string Name { get; set; }        
            public string Url  { get; set; }        
            public string Subject { get; set; }        
            public ObservableCollection<Forth> Forths { get; set; }   
    }   
    public class Forth   
    {        
            public Forth ()        
            {            
                      Fifths = new ObservableCollection<Fifth>();        
            }        
            public string Name { get; set; }        
            public string Url { get; set; }        
            public string Subject { get; set; }        
            public ObservableCollection<Fifth> Fifths { get; set; }   
    }  
    public class Fifth   
    {        
            public string Name { get; set; }        
            public string Url { get; set; }      
            public string Subject { get; set; }      
            public ObservableCollection<Fifth> Fifths { get; set; }   
    }

    XAML代码:
    <UserControl.Resources>
    <common:HierarchicalDataTemplate x:Key="FifthTemplate">
    <Controls:TreeViewItem Header="{Binding Name}" Tag="{Binding Url}" TabIndex="{Binding Subject}" x:Name="fifth"/>
    </common:HierarchicalDataTemplate>
    <common:HierarchicalDataTemplate x:Key="ForthTemplate" ItemsSource="{Binding Fifths}" ItemTemplate="{StaticResource FifthTemplate}">
    <Controls:TreeViewItem Header="{Binding Name}" Tag="{Binding Url}" TabIndex="{Binding Subject}" x:Name="forth"/>
    </common:HierarchicalDataTemplate>
    <common:HierarchicalDataTemplate x:Key="ThirdTemplate" ItemsSource="{Binding Forths}" ItemTemplate="{StaticResource ForthTemplate}">
    <Controls:TreeViewItem Header="{Binding Name}" Tag="{Binding Url}" TabIndex="{Binding Subject}" x:Name="third"/>
    </common:HierarchicalDataTemplate>
    <common:HierarchicalDataTemplate x:Key="SecondTemplate" ItemsSource="{Binding Thirds}" ItemTemplate="{StaticResource ThirdTemplate}">
    <Controls:TreeViewItem Header="{Binding Name}" Tag="{Binding Url}" TabIndex="{Binding Subject}" x:Name="second"/>
    </common:HierarchicalDataTemplate>
    <common:HierarchicalDataTemplate x:Key="FirstTemplate" ItemsSource="{Binding Seconds}" ItemTemplate="{StaticResource SecondTemplate}">
    <Controls:TreeViewItem Header="{Binding Name}" Tag="{Binding Url}" TabIndex="{Binding Subject}" x:Name="first"/>
    </common:HierarchicalDataTemplate>
    </UserControl.Resources>
    <Grid x:Name="LayoutRoot">
    <Controls:TreeView x:Name="tvDemo" ItemTemplate="{StaticResource FirstTemplate}" ></Controls:TreeView>
    以上的做法参考了http://www.cnblogs.com/chenxizhang/archive/2011/06/22/2087692.html,这样要如何取它选中的值呢? 尝试了很多种办法。。。。
    2011年7月4日 11:26

答案

  • TreeView里面有一个SelectedItemChanged 事件,你可以从他里面获得选中的项.
    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年7月7日 5:30
    版主