When I run the program and wanna execute the command "DeleteNodeCommand", I get the following Exception:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
Can someone help me with this Exception please? I'm a new to C# and I never had this exception before.
Here is all my code in my program:
ViewModel:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using Test.Models;
using Test.Views;
namespace Test.ViewModels
{
public class VMSubTabOverzicht : ObservableObject
{
private readonly object sender;
private readonly RoutedEventArgs e;
public ObservableCollection<ModelSubTabOverzicht> Hoofdborden { get; set; }
public RelayCommand ChangeNameNodeCommand { get { return new RelayCommand(x => { ChangeNameNode(); }); } }
public RelayCommand CreateNewNodeCommand { get { return new RelayCommand(x => { CreateNewNode(sender, e) ; }); } }
public RelayCommand DeleteNodeCommand { get { return new RelayCommand(x => { DeleteNode(); }); } }
public VMSubTabOverzicht()
{
Hoofdborden = new ObservableCollection<ModelSubTabOverzicht>()
{
new ModelSubTabOverzicht()
{
Name="ALSB",
Items = new ObservableCollection<ModelSubTabOverzicht>()
{
new ModelSubTabOverzicht (){Name="EB 1"}
}
}
};
}
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
if (value != _isSelected)
{
_isSelected = value;
this.OnPropertyChanged("IsSelected");
}
}
}
private void ChangeNameNode()
{
}
private void CreateNewNode(object sender, RoutedEventArgs e)
{
Hoofdborden.Add(new ModelSubTabOverzicht() { Name = "Nieuw werkblad"});
}
private void DeleteNode()
{
ModelSubTabOverzicht item = (sender as TreeViewItem).DataContext as ModelSubTabOverzicht;
item.FindDirectParent(Hoofdborden).Remove(item);
}
}
}
Model:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Windows.Controls;
namespace Test.Models
{
public class ModelSubTabOverzicht : ObservableObject
{
private string name;
public string Name
{
get
{
return this.name;
}
set
{
name = value;
OnPropertyChanged("Name");
}
}
public ModelSubTabOverzicht Parent { get; set; }
public ObservableCollection<ModelSubTabOverzicht> Items { get; set; }
public ObservableCollection<ModelSubTabOverzicht> FindDirectParent(ObservableCollection<ModelSubTabOverzicht> _items)
{
ObservableCollection<ModelSubTabOverzicht> ret = new ObservableCollection<ModelSubTabOverzicht>();
if (_items.Contains(this) == true)
{
ret = _items;
}
else
{
foreach (ModelSubTabOverzicht item in _items)
{
if (item.Items != null && item.Items.Contains(this) == true)
ret = FindDirectParent(item.Items);
}
}
return ret;
}
}
}