title: PowerShell WPF DataGrid: Exception thrown committing empty row
body: <p>I get exception trying to commit <em>empty</em> DataGrid row.</p>
  
  <pre><code>System.NullReferenceException: Object reference not set to an instance of an object.
     at MS.Internal.Data.PropertyPathWorker.DetermineWhetherDBNullIsValid()
     at MS.Internal.Data.PropertyPathWorker.get_IsDBNullValidForUpdate()
     at MS.Internal.Data.ClrBindingWorker.get_IsDBNullValidForUpdate()
     at System.Windows.Data.BindingExpression.ConvertProposedValue(Object value)
     at System.Windows.Data.BindingExpressionBase.UpdateValue()
     at System.Windows.Data.BindingExpression.Update(Boolean synchronous)
     at System.Windows.Data.BindingExpression.UpdateSource()
     at Microsoft.Windows.Controls.DataGridHelper.UpdateSource(FrameworkElement element, DependencyProperty dp)
     at Microsoft.Windows.Controls.DataGridTextColumn.CommitCellEdit(FrameworkElement editingElement)
     at Microsoft.Windows.Controls.DataGridColumn.CommitEdit(FrameworkElement editingElement)
     at Microsoft.Windows.Controls.DataGridCell.CommitEdit()
     at Microsoft.Windows.Controls.DataGrid.OnExecutedCommitEdit(ExecutedRoutedEventArgs e)
     at Microsoft.Windows.Controls.DataGrid.OnExecutedCommitEdit(Object sender, ExecutedRoutedEventArgs e)
     at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
     at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)
     at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
     at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)
     at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)
     at System.Windows.UIElement.OnExecutedThunk(Object sender, ExecutedRoutedEventArgs e)
     at System.Windows.Input.ExecutedRoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object target)
     at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
     at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
     at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
     at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
     at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
     at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)
     at System.Windows.Input.RoutedCommand.Execute(Object parameter, IInputElement target)
     at Microsoft.Windows.Controls.DataGrid.EndEdit(RoutedCommand command, DataGridCell cellContainer, DataGridEditingUnit editingUnit, Boolean exitEditMode)
     at Microsoft.Windows.Controls.DataGrid.CommitEdit(DataGridEditingUnit editingUnit, Boolean exitEditingMode)
     at Microsoft.Windows.Controls.DataGrid.CommitAnyEdit()
     at Microsoft.Windows.Controls.DataGrid.OnEnterKeyDown(KeyEventArgs e)
     at Microsoft.Windows.Controls.DataGrid.OnKeyDown(KeyEventArgs e)
     at System.Windows.UIElement.OnKeyDownThunk(Object sender, KeyEventArgs e)
     at System.Windows.Input.KeyEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
     at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
     at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
     at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
     at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
     at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
     at System.Windows.Input.InputManager.ProcessStagingArea()
     at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
     at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
     at System.Windows.Interop.HwndKeyboardInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawKeyboardActions actions, Int32 scanCode, Boolean isExtendedKey, Boolean isSystemKey, Int32 virtualKey)
     at System.Windows.Interop.HwndKeyboardInputProvider.ProcessKeyAction(MSG&amp; msg, Boolean&amp; handled)
     at System.Windows.Interop.HwndSource.CriticalTranslateAccelerator(MSG&amp; msg, ModifierKeys modifiers)
     at System.Windows.Interop.HwndSource.OnPreprocessMessage(Object param)
     at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
     at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
  Exception calling "Run" with "1" argument(s): "Object reference not set to an instance of an object."
  </code></pre>
  
  <p>Steps to reproduce:</p>
  
  <ul>
  <li>Goto "new row"</li>
  <li>Press F2</li>
  <li>Press ENTER</li>
  </ul>
  
  <p>This works ok:</p>
  
  <ul>
  <li>Goto "new row"</li>
  <li>Press F2</li>
  <li>Press ESC</li>
  </ul>
  
  <p>As well as:</p>
  
  <ul>
  <li>Goto "new row"</li>
  <li>Press F2</li>
  <li>Type "sdfdsf"</li>
  <li>Press ENTER</li>
  </ul>
  
  <p>Sources can be found <a href="http://cid-0dba2a6e137e8a9a.skydrive.live.com/self.aspx/Public/demo%7C_001.rar" rel="nofollow noreferrer">here</a>.</p>
  
  <p>I have found two posts that seems to be related to this problem:</p>
  
  <ol>
  <li><a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=361723" rel="nofollow noreferrer">Exception in .Net 3.5 SP1</a></li>
  <li><a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=422093" rel="nofollow noreferrer">WPF Databinding, Class Types, No Namespace Exception</a></li>
  </ol>
  
  <p>Also, I tried similar code in C#, and it worked fine. </p>
  
  <p>How can I fix this issue?</p>