Hi, I have a database set up with a Client table and a Project table. Clients have projects, and I set up a Hierarchical Data Template to display them in the treeview. I am now putting functionality in for adding/removing both clients and projects, but I've run into an issue.
Adding and removing Clients (the parent nodes) will update the treeview immediately when I call the INotifyPropertyChanged on the ObservableCollection that it is bound to, but the Projects (the children nodes) won't update until I close the application and start it again.
Here is all the relevant code I can think of:
my xaml:
<
Page.Resources
>
<
DataTemplate
x:Key
=
"Projects"
DataType
=
"{x:Type local:Project}"
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
Image
Source
=
"/Images/Project.png"
Height
=
"20"
Margin
=
"0,0,8,0"
/>
<
TextBlock
Text
=
"{Binding Name}"
/>
</
StackPanel
>
</
DataTemplate
>
<
HierarchicalDataTemplate
x:Key
=
"Clients"
DataType
=
"{x:Type local:Client}"
ItemTemplate
=
"{StaticResource Projects}"
ItemsSource
=
"{Binding Projects}"
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
Image
Source
=
"/Images/Client.png"
Height
=
"20"
Margin
=
"0,0,2,0"
/>
<
TextBlock
Text
=
"{Binding Name}"
/>
</
StackPanel
>
</
HierarchicalDataTemplate
>
<
Style
x:Key
=
"ItemContainerStyle"
TargetType
=
"{x:Type telerik:RadTreeViewItem}"
>
<
Setter
Property
=
"Template"
Value
=
"{StaticResource SavanetekTreeItem}"
/>
</
Style
>
</
Page.Resources
>
<
telerik:RadTreeView
x:Name
=
"RadTreeView1"
Grid.Row
=
"1"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Stretch"
Style
=
"{StaticResource SavanetekTreeViewStyle}"
ItemsSource
=
"{Binding ClientList}"
SelectedItem
=
"{Binding Path=SelectedObject, Mode=TwoWay}"
ItemTemplate
=
"{StaticResource Clients}"
ItemContainerStyle
=
"{StaticResource ItemContainerStyle}"
>
<
telerik:RadTreeView.ContextMenu
>
<
ContextMenu
>
<
MenuItem
Header
=
"New Client..."
Click
=
"MenuItemNewClientDetails_Click"
/>
<
MenuItem
Header
=
"New Project..."
Command
=
"{Binding NewProjectCommand}"
/>
<
Separator
/>
<
MenuItem
Header
=
"Edit..."
Click
=
"MenuItemEditClientDetails_Click"
/>
<
Separator
/>
<
MenuItem
Header
=
"Remove..."
/>
</
ContextMenu
>
</
telerik:RadTreeView.ContextMenu
>
</
telerik:RadTreeView
>
my remove function:
And my code for the ClientList with the Refresh and the function to cast the SelectedObject to a Client or a Project:
I had tried putting a for each loop in the refresh function that listed all the projects in the ClientList, and it does in fact delete/add the Projects to it, so I know that it has the proper data. It just isn't displaying it for some reason.
I would greatly appreciate if anyone knows how to remove a child from a parent on the treeview and have it refresh