title: UI is not updated when value of ObservableCollection Changes
body: <p>I have a window called MainWindow.xaml and a Page called Tiles.xaml.</p>
  
  <p>Both Window and Page shares the same ViewModel called MainWindowViewModel.cs</p>
  
  <p>Here is the MainWindowViewModel.cs</p>
  
  <pre><code>public class MainWindowViewModel : MainViewModel
  {
      public MainWindowViewModel()
      {
          ERP_Lite_ServiceClient client = new ERP_Lite_ServiceClient();
  
          Parents = new ObservableCollection&lt;MenuItemDTO&gt;(client.GetAllMenuItems().Where(m =&gt; m.ParentID == null));
  
          if (SelectedParent != null)
          {
              Children = new ObservableCollection&lt;MenuItemDTO&gt;(client.GetAllMenuItems().Where(m =&gt; m.ParentID == SelectedParent.MenuItemID));
          }
  
          client.Close();
  
      }
  
      private ObservableCollection&lt;MenuItemDTO&gt; _parents;
      public ObservableCollection&lt;MenuItemDTO&gt; Parents
      {
          get
          {
              return _parents;
          }
          set
          {
              _parents = value;
              OnPropertyChanged("Parents");
          }
      }
  
      private ObservableCollection&lt;MenuItemDTO&gt; _children;
      public ObservableCollection&lt;MenuItemDTO&gt; Children
      {
          get
          {
              return _children;
          }
          set
          {
              _children = value;
              OnPropertyChanged("Children");
          }
      }
  
      private MenuItemDTO _selectedParent;
      public MenuItemDTO SelectedParent
      {
          get
          {
              return _selectedParent;
          }
          set
          {
              _selectedParent = value;
              OnPropertyChanged("SelectedParent");
  
              ERP_Lite_ServiceClient client = new ERP_Lite_ServiceClient();
              Children = new ObservableCollection&lt;MenuItemDTO&gt;(client.GetAllMenuItems().Where(m =&gt; m.ParentID == SelectedParent.MenuItemID));
              client.Close();
          }
      }
  
  }
  </code></pre>
  
  <p>Here is MainWindow.xaml</p>
  
  <pre><code>&lt;Window.........&gt;
      &lt;Window.DataContext&gt;
          &lt;loc:MainWindowViewModel /&gt;
      &lt;/Window.DataContext&gt;
  
      &lt;Grid&gt;
  
          &lt;Grid.RowDefinitions&gt;
              &lt;RowDefinition Height="50" /&gt;
              &lt;RowDefinition Height="*" /&gt;
          &lt;/Grid.RowDefinitions&gt;
  
          &lt;Grid Grid.Row="0" Background="#FF2A2A2A"&gt;
  
              &lt;Grid.ColumnDefinitions&gt;
                  &lt;ColumnDefinition Width="*" /&gt;
                  &lt;ColumnDefinition Width="50" /&gt;
                  &lt;ColumnDefinition Width="50" /&gt;
              &lt;/Grid.ColumnDefinitions&gt;
  
              &lt;ListBox Grid.Column="0" ItemsSource="{Binding Parents}" DisplayMemberPath="Title"
                       SelectedItem="{Binding SelectedParent}"
                       Height="35" FontSize="18" BorderThickness="0" Background="#FF2A2A2A" Foreground="White" SelectedIndex="0"&gt;
  
                  &lt;ListBox.ItemsPanel&gt;
                      &lt;ItemsPanelTemplate&gt;
                          &lt;StackPanel IsItemsHost="True" Orientation="Horizontal"/&gt;
                      &lt;/ItemsPanelTemplate&gt;
                  &lt;/ListBox.ItemsPanel&gt;
  
  
                  &lt;ListBox.Resources&gt;
                      &lt;Style TargetType="{x:Type ListBoxItem}"&gt;
                          &lt;Setter Property="Template"&gt;
                              &lt;Setter.Value&gt;
                                  &lt;ControlTemplate TargetType="{x:Type ListBoxItem}"&gt;
                                      &lt;ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                                                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/&gt;
                                  &lt;/ControlTemplate&gt;
                              &lt;/Setter.Value&gt;
                          &lt;/Setter&gt;
                          &lt;Setter Property="FocusVisualStyle" Value="{x:Null}"/&gt;
                          &lt;Setter Property="Margin" Value="5,0" /&gt;
                          &lt;Style.Triggers&gt;
                              &lt;Trigger Property="IsSelected" Value="True"&gt;
                                  &lt;Setter Property="Foreground" Value="#FF1CB4F7" /&gt;
                                  &lt;Setter Property="FontWeight" Value="SemiBold" /&gt;
                              &lt;/Trigger&gt;
                              &lt;Trigger Property="IsMouseOver" Value="True"&gt;
                                  &lt;Setter Property="Foreground" Value="#FF87CEEB" /&gt;
                              &lt;/Trigger&gt;
                          &lt;/Style.Triggers&gt;
                      &lt;/Style&gt;
                  &lt;/ListBox.Resources&gt;
  
              &lt;/ListBox&gt;
  
          &lt;/Grid&gt;
  
          &lt;Frame Grid.Row="1" Source="/WPF_Client;component/Pages/Tiles.xaml"/&gt;
  
      &lt;/Grid&gt;
  
  &lt;/Window&gt;
  </code></pre>
  
  <p>Here is Tiles.xaml</p>
  
  <pre><code>&lt;Page.....&gt;
  
      &lt;Page.DataContext&gt;
          &lt;self:MainWindowViewModel /&gt;
      &lt;/Page.DataContext&gt;
  
      &lt;ListBox ItemsSource="{Binding Children}" DisplayMemberPath="Title"&gt;
  
  
      &lt;/ListBox&gt;
  
  &lt;/Page&gt;
  </code></pre>
  
  <p>I think I have correctly implemented INotifyPropertyChanged on MainWindowViewModel.cs. Also I have used ObservableCollection for Children Property. But still I don't understand why UI is not notified when collection inside Children changes.</p>