Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

Hierarchicaldatatemplate Binding Issues

$
0
0

Hello,

I have a treeview that is displaying the results like this?  I Do not want to show the children at the root level.  Is this a xaml binding error?

I Have a EF Class that looks like this.

public class Employee
        {
            public Employee()
            {

                this.Employees1 = new HashSet<Employee>();
            }

            public int EmployeeId { get; set; }
            public Nullable<int> ParentId { get; set; }
            public string Employee1 { get; set; }

            public virtual ICollection<Employee> Employees1 { get; set; }
            public virtual Employee Employee2 { get; set; }
        }

VM Like This

private readonly ObservableCollection<Employee> _employees = new ObservableCollection<Employee>();

    public ObservableCollection<Employee> Employees
    {
        get { return _employees; }
    }
    public EmployeeViewModel()
    {
    }

    public EmployeeViewModel(object owner)
    {
        LoadEmployees();
    }

    public void LoadEmployees()
    {
        try
        {
            var list = new ObservableCollection<Employee>
            {
                new Employee {EmployeeId = 1, Employee1 = "Emp 1", ParentId = null},
                new Employee {EmployeeId = 2, Employee1 = "Emp 2", ParentId = 1},
                new Employee {EmployeeId = 3, Employee1 = "Emp 3", ParentId = 2},
                new Employee {EmployeeId = 4, Employee1 = "Emp 4", ParentId = 3},
                new Employee {EmployeeId = 5, Employee1 = "Emp 5", ParentId = null},
                new Employee {EmployeeId = 6, Employee1 = "Emp 6", ParentId = null},
                new Employee {EmployeeId = 7, Employee1 = "Emp 7", ParentId = 6},
                new Employee {EmployeeId = 8, Employee1 = "Emp 8", ParentId = null},
                new Employee {EmployeeId = 9, Employee1 = "Emp 9", ParentId = 8},
                new Employee {EmployeeId = 10, Employee1 = "Emp 10", ParentId = null}
            };
            list.ForEach(t => _employees.Add(t));
            ProcessRootNodes();
        }
        catch (Exception e)
        {

            throw e;
        }
    }

public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
        private void ProcessRootNodes()
        {
            var rootNodes = _employees.Where(x => x.ParentId == null).ToList();

            foreach (Employee t in rootNodes)
            {
                t.Employees1 = this.AddChildren(t);
            }
        }

        private List<Employee> AddChildren(Employee entry)
        {
            var children = _employees.Where(x => x.ParentId == entry.EmployeeId).ToList();

            foreach (Employee t in children)
            {
                t.Employees1 = this.AddChildren(t);
            }
            return children;
        }

Xaml .CS Like this

public MainWindow()
        {
            InitializeComponent(); Loaded += OnLoaded;
        }

        public void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
        {
            DataContext = new EmployeeViewModel("Object");
        }

Xaml

<UserControl.Resources><HierarchicalDataTemplate x:Key="NodeTemplate"
    ItemsSource="{Binding Employees1}"><TextBlock Text="{Binding Employee1}"/></HierarchicalDataTemplate></UserControl.Resources><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="325" /><ColumnDefinition Width="Auto" /><ColumnDefinition Width="*" /></Grid.ColumnDefinitions><telerik:RadTreeView x:Name="radTreeView" Margin="8"
    ItemsSource="{Binding Employees}"
    ItemTemplate="{StaticResource NodeTemplate}"/>        </Grid>


Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>