Warum ObservableCollection löst eine Ausnahme aus, wenn geändert wird?
Meine Anwendung verwendet die WPF DataGrid
. Eine der Spalten ist eine Spalte Vorlage enthält ein ComboBox
gebunden an ein ObservableCollection
von der Person, die füttert die Reihe. Wenn ich einen Wert um die ObservableCollection
eine NullReferenceException
geworfen wird.
Hat jemand eine Idee warum dies passiert? Hier wird der stack-trace der exception:
bei MS. Internal.Daten.PropertyPathWorker.DetermineWhetherDBNullIsValid() bei MS. Internal.Daten.PropertyPathWorker.get_IsDBNullValidForUpdate() bei MS. Internal.Daten.ClrBindingWorker.get_IsDBNullValidForUpdate() System.Windows.Daten.BindingExpression.ConvertProposedValue(Object Wert) System.Windows.Daten.BindingExpressionBase.UpdateValue() System.Windows.Daten.BindingExpression.Update(Boolean synchronous) System.Windows.Daten.BindingExpressionBase.Dirty() System.Windows.Daten.BindingExpression.SetValue(DependencyObject d, DependencyProperty dp, Object value) System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, OperationType operationType, Boolean isInternal) System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value) System.Windows.Controls.Primitiven.Selektor.UpdatePublicSelectionProperties() System.Windows.Controls.Primitiven.Selektor.SelectionChanger.Ende() System.Windows.Controls.Primitiven.Selektor.OnItemsChanged(NotifyCollectionChangedEventArgs e) System.Windows.Controls.ItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) System.Sammlungen.Spezialisierte.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e) System.Windows.Daten.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args) System.Windows.Controls.ItemCollection.System.Windows.IWeakEventListener.ReceiveWeakEvent(Typ managerType, Object sender, EventArgs e) System.Windows.WeakEventManager.DeliverEventToList(Object sender, EventArgs args, ListenerList Liste) System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args) System.Sammlungen.Spezialisierte.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args) System.Windows.Daten.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args) System.Windows.Daten.ListCollectionView.ProcessCollectionChangedWithAdjustedindex(NotifyCollectionChangedEventArgs args, Int32 adjustedOldIndex, Int32 adjustedNewIndex) System.Windows.Daten.ListCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args) System.Windows.Daten.CollectionView.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args) System.Sammlungen.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) System.Sammlungen.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item) System.Sammlungen.ObjectModel.Sammlung`1.Add(T item) im ORF.PersonBook.IdentityModule.Modell.SubsidiaryModel.AddRoom(RoomModel Zimmer) in C:\Project\Phoenix\Development\src\ORF.PersonBook.IdentityModule\Model\SubsidiaryModel.cs:line 127
- können Sie ein Beispiel geben, das problem zu reproduzieren ?
- Ich wünschte, ich könnte, aber ich habe versucht, und konnte es nicht reproduzieren in einer kleinen Testanwendung :S
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließlich fand ich den Grund für die Ausnahme. Das problem tritt auf, wenn Sie entfernen das ausgewählte Element aus der Liste. Unten habe ich gepostet, einen unvollständigen code.
- Und view-Modell:
Die Lösung ist, zuerst die ausgewählten Elements auf null (oder einen anderen Eintrag), bevor Sie tatsächlich zu entfernen das Element aus der Liste.
Oliver Hanappi
Ist dein Zimmer Klasse Objekt wirklich instanziiert?
Es sieht aus, als wenn Ihr das hinzufügen einer uninitialised value.