Hi -
I have a treeview set up very much like the example found at this post: http://www.telerik.com/community/forums/silverlight/treeview/load-on-demand-using-wcf-ria-serices.aspx. The initial load works like it should but when I click on one of the nodes it shows a rotating arrow and never expands. I've stepped through the code and the entities are being pulled so I know that part is working but there must be something else I'm missing. Any ideas what that might be?
My xaml looks like:
and the code behind:
Thanks!
I have a treeview set up very much like the example found at this post: http://www.telerik.com/community/forums/silverlight/treeview/load-on-demand-using-wcf-ria-serices.aspx. The initial load works like it should but when I click on one of the nodes it shows a rotating arrow and never expands. I've stepped through the code and the entities are being pulled so I know that part is working but there must be something else I'm missing. Any ideas what that might be?
My xaml looks like:
<
UserControl.Resources
>
<
DataTemplate
x:Key
=
"PageTemplate"
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
TextBlock
Text
=
"Page: "
FontSize
=
"9"
/>
<
TextBlock
Text
=
"{Binding PageName}"
FontSize
=
"9"
/>
</
StackPanel
>
</
DataTemplate
>
<
telerik:HierarchicalDataTemplate
x:Key
=
"FolderTemplate"
ItemsSource
=
"{Binding Folders}"
ItemTemplate
=
"{StaticResource PageTemplate}"
>
<
StackPanel
Orientation
=
"Horizontal"
>
<!--<TextBlock Text="Folder:" FontSize="9"/>-->
<
TextBlock
Text
=
"{Binding FolderName}"
FontSize
=
"9"
/>
<
telerikMenu:RadContextMenu.ContextMenu
>
<
telerikMenu:RadContextMenu
x:Name
=
"treeContextMenu"
Opened
=
"treeContextMenu_Opened"
>
<
telerikMenu:RadMenuItem
Header
=
"New Folder"
Click
=
"ContextMenu_NewFolderClick"
/>
<
telerikMenu:RadMenuItem
Header
=
"New Page"
Click
=
"ContextMenu_NewPageClick"
/>
<
telerikMenu:RadMenuItem
Header
=
"Secure"
Click
=
"ContextMenu_SecureClick"
/>
<
telerikMenu:RadMenuItem
Header
=
"Manage"
Click
=
"ContextMenu_ManageClick"
/>
</
telerikMenu:RadContextMenu
>
</
telerikMenu:RadContextMenu.ContextMenu
>
</
StackPanel
>
</
telerik:HierarchicalDataTemplate
>
</
UserControl.Resources
>
<
Grid
x:Name
=
"LayoutRoot"
Background
=
"White"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
ScrollViewer
VerticalScrollBarVisibility
=
"Visible"
Grid.Row
=
"1"
>
<
telerikNavigation:RadTreeView
x:Name
=
"myTreeView"
ItemTemplate
=
"{StaticResource FolderTemplate}"
IsLineEnabled
=
"True"
IsLoadOnDemandEnabled
=
"True"
LoadOnDemand
=
"myTreeView_LoadOnDemand"
IsVirtualizing
=
"True"
ItemPrepared
=
"myTreeView_ItemPrepared"
Selected
=
"myTreeView_Selected"
/>
</
ScrollViewer
>
</
Grid
>
</
UserControl
>
and the code behind:
public NavTreeView()
{
InitializeComponent();
this.DataContext = new MAGIC.ViewModels.MainViewModel();
this.Loaded += new RoutedEventHandler(TreeViewPage_Loaded);
this.myTreeView.AddHandler(RadTreeView.KeyDownEvent, new KeyEventHandler(TreeEntryControl_KeyDown), true);
}
void TreeViewPage_Loaded(object sender, RoutedEventArgs e)
{
this.myTreeView.ItemsSource = context.Folders;
context.Load(context.GetFoldersQuery());
}
void operation_Completed(object sender, EventArgs e)
{
ObservableCollection<
Entity
> wrapCollection = new ObservableCollection<
Entity
>((sender as LoadOperation).Entities);
this.myTreeView.ItemsSource = wrapCollection;
}
private void myTreeView_LoadOnDemand(object sender, Telerik.Windows.RadRoutedEventArgs e)
{
// get the treeview
RadTreeView tree = sender as RadTreeView;
// get the clicked Item
RadTreeViewItem clickedItem = e.OriginalSource as RadTreeViewItem;
if (clickedItem.Item as Folder != null)
{
//var test = (clickedItem.Item as Folder).FolderId;
context.Load(context.GetPagesQuery((clickedItem.Item as Folder).FolderId));
}
//if need another level of tree, insert "else if" statement here
}
private void myTreeView_ItemPrepared(object sender, RadTreeViewItemPreparedEventArgs e)
{
if (e.PreparedItem.Item is MAGIC.Data.Page)
{
e.PreparedItem.IsLoadOnDemandEnabled = false;
}
}
Thanks!