Задайте вопросЗадайте вопрос
 

ОтвеченоHierarchicalDataTemplate for TreeView programmatically (C#).

  • 2 июля 2009 г. 18:52kicaj Медали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     С кодом
    I have this class:
        public class Folder
        {
            private string _name;
            internal string Name
            {get { return _name; }}
    
            private List<Folder> _subfolders;
            internal List<Folder> Subfolders
            { get { return _subfolders; } }
    
            public Folder()
            {
                _name = "Root";
                _subfolders = new List<Folder>();
                _subfolders.Add(new Folder("F1"));
                _subfolders[0].Subfolders.Add(new Folder("F1.1"));
                _subfolders[0].Subfolders.Add(new Folder("F1.2"));
    
                _subfolders.Add(new Folder("F2"));
                _subfolders[1].Subfolders.Add(new Folder("F2.1"));
                _subfolders[1].Subfolders.Add(new Folder("F2.2"));
            }
    
            public Folder(string name)
            {
                _name = name;
                _subfolders = new List<Folder>();
            }
        }
    
    and I want display instance of this class in TreeView, but after this call TreeView is empty. Does anybode know what is wrong?
            private void Sample()
            {
                Folder folder = new Folder();
    
                FrameworkElementFactory labelFactory = new FrameworkElementFactory(typeof(TextBlock));
    
                //1. We have to define type of items
                HierarchicalDataTemplate template = new HierarchicalDataTemplate(typeof(Folder));
                //2. We have to define source for subitems
                template.ItemsSource = new Binding("Subfolders");
                //3. We have to define DataTemplate for items
                labelFactory.SetBinding(TextBlock.TextProperty, new Binding("Name"));
                template.VisualTree = labelFactory;
    
                treeView1.ItemTemplate = template;
                treeView1.ItemsSource = folder.Subfolders;
            }
    
    Regards

Ответы

Все ответы