In my program I have a TreeView
with data backings (View Model & Data Model). Each item added to the TreeView
gets a child item added with it, but for some reason the children are not reflecting during run time. However, I am able to see the children during debugging and my "Children" property in the TreeView's
data model includes NotifyPropertyChange
in it's setter.
Note: Earlier I had a similar problem where newly added nodes (parents of these children) wouldn't be displayed either. This problem was corrected by setting DisplayMemberPath="DisplayName.Value"
in the tree's xaml.
TreeView's
xaml:
TreeView ItemsSource="{Binding UserControl_DataModel.TreeViewViewModel.ObservableCollection<TreeViewDataModel>}" DisplayMemberPath="DisplayName.Value".../>
This is where new nodes are created and added to the TreeView
(TreeViewViewModel):
private TreeViewDataModel createNewNode(StringItem nodeName)
{
var newNode = new TreeViewDataModel ()
{
DisplayName = nodeName
};
newNode.Children.Add(new TreeViewDataModel () { DisplayName = nodeName});
return newNode;
}
public void addNewLocNode(StringItem nodeName)
{
TreeObservableCollection.Add(createNewNode(nodeName));
}
Note: StringItem
is a custom class. In StringItem
, Value
returns the string value of the item. (Ex: StringItem.Value
)
Children property in TreeViewDataModel:
public ObservableCollection<TreeViewDataModel> Children
{
get { return _children ?? (_children = new ObservableCollection<TreeViewDataModel>()); }
set
{
_children = value;
NotifyPropertyChange(() => Children);
}
}
Why aren't the child nodes showing up in my TreeView
, and how can I fix this?