I have Work class (Work.cs):
and Project class (Project.cs):
I bind collection of Work to treeView which is using HierarchicalDataTemplate:
TreeView shows works for first level and for second level for every work shows projects (appendix works.png).
I want to be able to programmatically select project item and set it to edit mode (MainWindow.xaml.cs, MyData class is at the end):
In RadButton_Click method I do that by GetItemByPath method. When I run application it shows some weird UI error (appendix error.png) but it should shows project title (appendix normal.png).
MyData.cs
using
System;
using
System.Collections.Generic;
namespace
TelerikTreeViewApp
{
public
class
Work
{
public
String Title {
get
;
set
; }
public
Work(String title)
{
Title = title;
}
public
List<Project> Projects {
get
;
set
; }
}
}
using
System;
namespace
TelerikTreeViewApp
{
public
class
Project
{
public
String Title {
get
;
set
; }
public
Project(String title)
{
Title = title;
}
}
}
I bind collection of Work to treeView which is using HierarchicalDataTemplate:
<
Window
x:Class
=
"TelerikTreeViewApp.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Window.Resources
>
<
DataTemplate
x:Key
=
"ProjectTemplate"
>
<
TextBlock
Text
=
"{Binding Title}"
/>
</
DataTemplate
>
<
HierarchicalDataTemplate
x:Key
=
"WorkTemplate"
ItemTemplate
=
"{StaticResource ProjectTemplate}"
ItemsSource
=
"{Binding Projects}"
>
<
TextBlock
Text
=
"{Binding Title}"
/>
</
HierarchicalDataTemplate
>
</
Window.Resources
>
<
Grid
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"100"
/>
<
ColumnDefinition
Width
=
"*"
/>
</
Grid.ColumnDefinitions
>
<
StackPanel
Grid.Column
=
"0"
>
<
telerik:RadButton
Click
=
"RadButton_Click"
Content
=
"Test 1"
/>
</
StackPanel
>
<
telerik:RadTreeView
x:Name
=
"treeView"
IsEditable
=
"True"
ItemsSource
=
"{Binding Works}"
ItemTemplate
=
"{StaticResource WorkTemplate}"
PathSeparator
=
"|"
telerik:TextSearch.TextPath
=
"Title"
Grid.Column
=
"1"
/>
</
Grid
>
</
Window
>
TreeView shows works for first level and for second level for every work shows projects (appendix works.png).
I want to be able to programmatically select project item and set it to edit mode (MainWindow.xaml.cs, MyData class is at the end):
using System.Linq;
using System.Windows;
using Telerik.Windows.Controls;
namespace TelerikTreeViewApp
{
/// <
summary
>
/// Interaction logic for MainWindow.xaml
/// </
summary
>
public partial class MainWindow : Window
{
private string titleWork;
private string titleProject;
public MainWindow()
{
InitializeComponent();
titleWork = "Work 2";
titleProject = titleWork + " - Project 4";
DataContext = new MyData();
}
private void RadButton_Click(object sender, RoutedEventArgs e)
{
var work = treeView.Items.SourceCollection.Cast<
Work
>().FirstOrDefault(w => w.Title == titleWork);
var workItem = treeView.ContainerFromItemRecursive(work);
workItem.IsExpanded = true;
var projectItem = treeView.GetItemByPath(titleWork + "|" + titleProject, "|");
projectItem.IsSelected = true;
projectItem.IsInEditMode = true;
projectItem.Focus();
}
}
}
MyData.cs
using
System;
using
System.Collections.Generic;
using
System.Collections.ObjectModel;
namespace
TelerikTreeViewApp
{
public
class
MyData
{
public
ObservableCollection<Work> Works {
get
;
set
; }
public
ObservableCollection<Project> Projects {
get
;
set
; }
public
MyData()
{
InitializeWorks();
Projects =
new
ObservableCollection<Project>();
}
public
void
InitializeWorks()
{
String workTitle = String.Empty;
Works =
new
ObservableCollection<Work>();
workTitle =
"Work 1"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 2"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 3"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 4"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 5"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 6"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 7"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
workTitle =
"Work 8"
;
Works.Add(
new
Work(workTitle)
{
Projects =
new
List<Project>(
new
Project[] {
new
Project(workTitle +
" - Project 1"
) ,
new
Project(workTitle +
" - Project 2"
) ,
new
Project(workTitle +
" - Project 3"
) ,
new
Project(workTitle +
" - Project 4"
) ,
new
Project(workTitle +
" - Project 5"
) ,
new
Project(workTitle +
" - Project 6"
) ,
new
Project(workTitle +
" - Project 7"
) ,
new
Project(workTitle +
" - Project 8"
) ,
new
Project(workTitle +
" - Project 9"
) ,
new
Project(workTitle +
" - Project 10"
),
new
Project(workTitle +
" - Project 11"
) ,
new
Project(workTitle +
" - Project 12"
) ,
new
Project(workTitle +
" - Project 13"
) ,
new
Project(workTitle +
" - Project 14"
) ,
new
Project(workTitle +
" - Project 15"
) ,
new
Project(workTitle +
" - Project 16"
) ,
new
Project(workTitle +
" - Project 17"
) ,
new
Project(workTitle +
" - Project 18"
) ,
new
Project(workTitle +
" - Project 19"
) ,
new
Project(workTitle +
" - Project 20"
)
})
});
}
}
}