<telerik:RadTreeListView Margin="3" Name="tv" Grid.Row="2" telerik:StyleManager.Theme="Office_Silver" AutoGenerateColumns="False" IsFilteringAllowed="False" HierarchyColumnIndex="1" RowIndicatorVisibility="Collapsed" SelectedCellsChanged="tv_SelectedCellsChanged" IsReadOnly="True"> <telerik:RadTreeListView.ChildTableDefinitions> <telerik:TreeListViewTableDefinition ItemsSource="{Binding Items}" /> </telerik:RadTreeListView.ChildTableDefinitions> <telerik:RadTreeListView.Columns> <telerik:GridViewSelectColumn /> <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}" Header="分类编号" IsVisible="False"/> <telerik:GridViewDataColumn DataMemberBinding="{Binding CategoryName}" Header="分类名称" Width="300" /> </telerik:RadTreeListView.Columns> </telerik:RadTreeListView>
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Collections.ObjectModel; namespace SGSGHome.Views.File { public class CatItem { public long ID { get; set; } public string CategoryName { get; set; } public long? ParentID { get; set; } public ObservableCollection<CatItem> Items { get; set; } public CatItem(long id, string catName, long? parentID) { this.ID = id; this.CategoryName = catName; this.ParentID = parentID; this.Items = new ObservableCollection<CatItem>(); } } }
public IList<CoreService.FileCategory> CatList { get; set; } void client_GetFileCategoryListCompleted(object sender, CoreService.GetFileCategoryListCompletedEventArgs e) { //递归填充TreeListView this.CatList = e.Result; var root = CatList.First(x => x.ParentID == null); var rootItem = new CatItem(root.ID, root.CategoryName, null); AddChild(root.ID, rootItem); tv.ItemsSource = new ObservableCollection<CatItem>() { rootItem }; tv.AutoExpandItems = true; } //递归方法 void AddChild(long parentID, CatItem parentItem) { var filterList = CatList.Where(x => x.ParentID == parentID).ToList(); foreach (var tt in filterList) { var childItem = new CatItem(tt.ID, tt.CategoryName, tt.ParentID); parentItem.Items.Add(childItem); var childrenList = CatList.Where(x => x.ParentID == tt.ID).ToList(); if (childrenList.Count > 0) { AddChild(tt.ID, childItem); } } }