title: InvalidOperationException when hide window
body: <p>I'm writing a simple form on WPF, and it works fine. But now I should change target framework from 4 to 3.5. But when i'm running 3.5 version, it fails with excepton. So <code>OnLoaded</code> is like this:</p>
  
  <pre><code>    private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
      {
          _notificator = new Notificator(Directory.GetCurrentDirectory());
          _notificator.EventStarted += (o, ev) =&gt; Dispatcher.Invoke(new Action(() =&gt;
                                                                          {
                                                                              new NotificationPage(ev).Show();
                                                                              _collection.Remove(ev);
                                                                          }));
          _notificator.EventRemoved += (o, ev) =&gt; _collection.Remove(ev);
          _notificator.EventAdded += (o, ev) =&gt; _collection.Insert(_notificator.Events.IndexOf(ev), ev);
          _collection = new ObservableCollection&lt;MyEvent&gt;(_notificator.Events);
          EventsGrid.DataContext = _collection;
          _notificator.Start();
          LostEventsGrid.DataContext = _notificator.LostEvents;
          Hide();
      }
  </code></pre>
  
  <p>I wrote entire method, but it fails only on Hide method with <code>Two-way binding requires Path or XPath</code>. Stacktrace:</p>
  
  <blockquote>
    <p>в System.Windows.Data.BindingExpression.CreateBindingExpression(DependencyObject d, DependencyProperty dp, Binding binding, BindingExpressionBase parent)
       в System.Windows.Data.Binding.CreateBindingExpressionOverride(DependencyObject target, DependencyProperty dp, BindingExpressionBase owner)
       в System.Windows.Data.BindingOperations.SetBinding(DependencyObject target, DependencyProperty dp, BindingBase binding)
       в Microsoft.Windows.Controls.DataGridBoundColumn.ApplyBinding(DependencyObject target, DependencyProperty property)
       в Microsoft.Windows.Controls.DataGridTextColumn.GenerateElement(DataGridCell cell, Object dataItem)
       в Microsoft.Windows.Controls.DataGridColumn.BuildVisualTree(Boolean isEditing, Object dataItem, DataGridCell cell)
       в Microsoft.Windows.Controls.DataGridCell.BuildVisualTree()
       в Microsoft.Windows.Controls.DataGridCell.PrepareCell(Object item, DataGridRow ownerRow, Int32 index)
       в Microsoft.Windows.Controls.DataGridCell.PrepareCell(Object item, ItemsControl cellsPresenter, DataGridRow ownerRow)
       в Microsoft.Windows.Controls.Primitives.DataGridCellsPresenter.PrepareContainerForItemOverride(DependencyObject element, Object item)
       в System.Windows.Controls.ItemsControl.MS.Internal.Controls.IGeneratorHost.PrepareItemContainer(DependencyObject container, Object item)
       в System.Windows.Controls.ItemContainerGenerator.System.Windows.Controls.Primitives.IItemContainerGenerator.PrepareItemContainer(DependencyObject container)
       в Microsoft.Windows.Controls.DataGridCellsPanel.InsertContainer(Int32 childIndex, UIElement container, Boolean isRecycled)
       в Microsoft.Windows.Controls.DataGridCellsPanel.InsertNewContainer(Int32 childIndex, UIElement container)
       в Microsoft.Windows.Controls.DataGridCellsPanel.AddContainerFromGenerator(Int32 childIndex, UIElement child, Boolean newlyRealized)
       в Microsoft.Windows.Controls.DataGridCellsPanel.GenerateChild(IItemContainerGenerator generator, Size constraint, DataGridColumn column, Int32&amp; childIndex, Size&amp; childSize)
       в Microsoft.Windows.Controls.DataGridCellsPanel.GenerateChildren(IItemContainerGenerator generator, Int32 startIndex, Int32 endIndex, Size constraint)
       в Microsoft.Windows.Controls.DataGridCellsPanel.GenerateAndMeasureChildrenForRealizedColumns(Size constraint)
       в Microsoft.Windows.Controls.DataGridCellsPanel.MeasureOverride(Size constraint)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
       в System.Windows.Controls.ItemsPresenter.MeasureOverride(Size constraint)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в System.Windows.Controls.Control.MeasureOverride(Size constraint)
       в Microsoft.Windows.Controls.Primitives.DataGridCellsPresenter.MeasureOverride(Size availableSize)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
       в System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
       в System.Windows.Controls.Grid.MeasureOverride(Size constraint)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в System.Windows.Controls.Border.MeasureOverride(Size constraint)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в System.Windows.Controls.Control.MeasureOverride(Size constraint)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(Size constraint)
       в Microsoft.Windows.Controls.Primitives.DataGridRowsPresenter.MeasureOverride(Size constraint)
       в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       в System.Windows.UIElement.Measure(Size availableSize)
       в System.Windows.ContextLayoutManager.UpdateLayout()
       в System.Windows.Interop.HwndSource.Process_WM_SIZE(UIElement rootUIElement, IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в System.Windows.Interop.HwndSource.LayoutFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
       в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp; handled)
       в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
       в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
       в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
       в System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
       в System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Boolean isSingleParameter)
       в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Boolean isSingleParameter)
       в System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
       в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в MS.Win32.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в MS.Win32.HwndSubclass.DefWndProcWrapper(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в MS.Win32.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в MS.Win32.HwndSubclass.CallOldWindowProc(IntPtr oldWndProc, IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)</p>
  </blockquote>
  
  <p>in .net 4+ it works fine</p>