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") }) }); } }}