title: Binding not working properly in treeview WPF
body: <p>I have an <code>Employee</code> Class as shown below:</p>
  
  <pre><code>public class Employee : INotifyPropertyChanged
      {
          public Employee()
          {
              _subEmployee = new ObservableCollection&lt;Employee&gt;();
          }
  
          public string Name { get; set; }
  
          public ObservableCollection&lt;Employee&gt; SubEmployee
          {
              get { return _subEmployee; }
              set
              {
                  _subEmployee = value;
                  NotifiyPropertyChanged("SubEmployee");
              }
          }
  
          ObservableCollection&lt;Employee&gt; _subEmployee;
  
          public event PropertyChangedEventHandler PropertyChanged;
          void NotifiyPropertyChanged(string property)
          {
              if (PropertyChanged != null)
                  PropertyChanged(this, new PropertyChangedEventArgs(property));
          }
      }
  </code></pre>
  
  <p>I am creating a collection of employee class in Main window constructor
  and adding it to an observable collection of employee as shown below:</p>
  
  <pre><code>public partial class MainWindow : Window
      {
          public ObservableCollection&lt;Employee&gt; Emp { get; private set; }
          public MainWindow()
          {
              InitializeComponent();
              Emp = new ObservableCollection&lt;Employee&gt;();
              Emp.Add(new Employee(){Name = "Anuj"});
              Emp.Add(new Employee() { Name = "Deepak" });
              Emp.Add(new Employee() { Name = "Aarti" });
  
              Emp[0].SubEmployee.Add(new Employee(){Name = "Tonu"});
              Emp[0].SubEmployee.Add(new Employee() { Name = "Monu" });
              Emp[0].SubEmployee.Add(new Employee() { Name = "Sonu" });
  
              Emp[2].SubEmployee.Add(new Employee() { Name = "Harsh" });
              Emp[2].SubEmployee.Add(new Employee() { Name = "Rahul" });
              Emp[2].SubEmployee.Add(new Employee() { Name = "Sachin" });
              this.DataContext = this;
          }      
      }
  </code></pre>
  
  <p>I have set the DataContext as self.
  Now, in xaml file I have created a hierarchical template of treeview and binded data as shown below:</p>
  
  <pre><code>&lt;Window x:Class="WpfApplication3.MainWindow"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          Title="MainWindow" Height="350" Width="525"&gt;
      &lt;Grid&gt;
          &lt;TreeView ItemsSource="{Binding}"&gt;
              &lt;TreeView.ItemTemplate&gt;
                  &lt;HierarchicalDataTemplate ItemsSource="{Binding SubEmployee}"&gt;
                      &lt;TextBlock Text="{Binding Name}" /&gt;
                  &lt;/HierarchicalDataTemplate&gt;
              &lt;/TreeView.ItemTemplate&gt;
          &lt;/TreeView&gt;
  
      &lt;/Grid&gt;
  &lt;/Window&gt;
  </code></pre>
  
  <p>Now when I keep, <code>TreeView ItemsSource="{Binding Emp}"</code> , binding works properly
  and I can see the tree view structure after running the code.
  However when I keep <code>TreeView ItemsSource="{Binding}"</code>, I see no result after running the code.</p>
  
  <p>To my understanding, keeping <code>ItemSource = "{Binding}"</code> means I am binding to the evaluated value of the current datacontext.
  As my datacontext is set to self, <code>ItemSource = "{Binding}"</code> should mean I am binding to the only property of DataContext i.e. Emp and I should get proper result.</p>
  
  <p>Please help me in understanding the problem I am getting in keeping binding as
  <code>ItemSource = "{Binding}"</code>.</p>