wpf observableCollection - PullRequest
       6

wpf observableCollection

1 голос
/ 17 июня 2010

У меня есть ObservableCollection, которая является dataContext для моего дерева, когда я пытаюсь удалить Item из ObservableCollection, я получу ошибку, что ссылка на объект не установлена ​​на экземпляр объекта.подскажите, пожалуйста, почему происходит эта ошибка и каково ее решение

спасибо

РЕДАКТИРОВАТЬ 1: код выглядит примерно так:

class MyClass : INotifyPropertyChanged
{
    //my class code here
}
public partial class UC_myUserControl : UserControl
{
    private ObservableCollection<MyClass> myCollection = new ObservableCollection<MyClass>();
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        myCollection.add(new myClass);
        myTreeView.DataContext = myCollection ;
    }
    private void deleteItem()
    {
        myCollection.RemoveAt(0);
        //after removing I get error Which I guess should be something related 
        //to interface update but I don't know how can I solve it
    }
}

Сведения об исключении: система.NullReferenceException не обработано. Message = "Ссылка на объект не установлена ​​для экземпляра объекта."Source = "PresentationFramework"

РЕДАКТИРОВАТЬ 3: У меня есть стиль для моего элемента дерева, чтобы сохранить элементы дерева расширенными

<Style TargetType="TreeViewItem">
      <Setter Property="IsExpanded" Value="True" />
</Style>

и с комментированием этой части я не получу никакой ошибки !!!Теперь я хочу изменить свой вопрос на то, почему этот стиль вызывает ошибку?

Ответы [ 2 ]

1 голос
/ 21 июня 2010

У меня была похожая проблема, когда у меня также была привязка к выбранному элементу в коллекции, и я пытался удалить выбранный элемент. Мне пришлось сначала изменить выбранный элемент, а затем удалить его.

1 голос
/ 17 июня 2010

Как я уже говорил в EDIT2, причина в том, что у меня есть стиль для расширения всех древовидных элементов с удалением стиля, который isue решен. Спасибо за все комментарии.

<Style TargetType="TreeViewItem">
      <Setter Property="IsExpanded" Value="True" />
</Style>
...