This question is locked. New answers and comments are not allowed.
Hello,
I have created a very simple RadTreeView project that builds a tree using ItemTemplateSelectors and ItemEditTemplateSelectors. The dataset is a simple heirarchical ObservableCollection of my TreeNode object.
Whenver I am editing a non-root node, if I attempt to add a <space> it will not be typed, and the parent of the edited node will have it's selection property toggled. Am I doing something incorrectly here or is this a bug I've discovered? If I try to add a <space> to the root node, it works fine.
My code is as follows (sorry I can't attach a project here):
I have created a very simple RadTreeView project that builds a tree using ItemTemplateSelectors and ItemEditTemplateSelectors. The dataset is a simple heirarchical ObservableCollection of my TreeNode object.
Whenver I am editing a non-root node, if I attempt to add a <space> it will not be typed, and the parent of the edited node will have it's selection property toggled. Am I doing something incorrectly here or is this a bug I've discovered? If I try to add a <space> to the root node, it works fine.
My code is as follows (sorry I can't attach a project here):
<telerik:RadTreeView x:Name="rtv" IsEditable="True" ItemsSource="{Binding}" ItemTemplateSelector="{StaticResource tnits}" ItemEditTemplate="{x:Null}" ItemEditTemplateSelector="{StaticResource tneits}"> </telerik:RadTreeView>using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Collections.ObjectModel; using Telerik.Windows.Controls; namespace SilverlightApplication50 { public partial class MainPage : UserControl { ObservableCollection<TreeNode> root = new ObservableCollection<TreeNode>(); public MainPage() { InitializeComponent(); TreeNode r = new TreeNode(0, 0, "r"); TreeNode a = new TreeNode(1000, 1, "a"); a.AddChild(new TreeNode(1001, 2, "a1")); a.AddChild(new TreeNode(1002, 2, "a2")); a.AddChild(new TreeNode(1003, 2, "a3")); a.AddChild(new TreeNode(1004, 2, "a4")); a.AddChild(new TreeNode(1005, 2, "a5")); a.AddChild(new TreeNode(1006, 2, "a6")); a.AddChild(new TreeNode(1007, 2, "a7")); a.AddChild(new TreeNode(1008, 2, "a8")); a.AddChild(new TreeNode(1009, 2, "a9")); a.AddChild(new TreeNode(1010, 2, "a10")); a.AddChild(new TreeNode(1011, 2, "a11")); a.AddChild(new TreeNode(1012, 2, "a12")); TreeNode b = new TreeNode(2000, 1, "b"); b.AddChild(new TreeNode(2001, 2, "b1")); b.AddChild(new TreeNode(2002, 2, "b2")); b.AddChild(new TreeNode(2003, 2, "b3")); b.AddChild(new TreeNode(2004, 2, "b4")); b.AddChild(new TreeNode(2005, 2, "b5")); b.AddChild(new TreeNode(2006, 2, "b6")); b.AddChild(new TreeNode(2007, 2, "b7")); b.AddChild(new TreeNode(2008, 2, "b8")); b.AddChild(new TreeNode(2009, 2, "b9")); b.AddChild(new TreeNode(2010, 2, "b10")); b.AddChild(new TreeNode(2011, 2, "b11")); b.AddChild(new TreeNode(2012, 2, "b12")); r.AddChild(a); r.AddChild(b); root.Add(r); this.DataContext = root; } } }public class TreeNodeItemTemplateSelector : DataTemplateSelector { public HierarchicalDataTemplate hdt_Level0 { get { return Application.Current.Resources["hdt_Level0"] as HierarchicalDataTemplate; } } public HierarchicalDataTemplate hdt_NotLevel0 { get { return Application.Current.Resources["hdt_NotLevel0"] as HierarchicalDataTemplate; } } public TreeNodeItemTemplateSelector() { } public override DataTemplate SelectTemplate(object item, DependencyObject container) { base.SelectTemplate(item, container); TreeNode tn = item as TreeNode; if (tn.Level == 0) { return this.hdt_Level0; } else { return this.hdt_NotLevel0; } } } public class TreeNodeItemEditTemplateSelector : DataTemplateSelector { public DataTemplate dt_Level0_Edit { get { return Application.Current.Resources["dt_Level0_Edit"] as DataTemplate; } } public DataTemplate dt_NotLevel0_Edit { get { return Application.Current.Resources["dt_NotLevel0_Edit"] as DataTemplate; } } public TreeNodeItemEditTemplateSelector() { } public override DataTemplate SelectTemplate(object item, DependencyObject container) { base.SelectTemplate(item, container); TreeNode tn = item as TreeNode; if (tn.Level == 0) { return this.dt_Level0_Edit; } else { return this.dt_NotLevel0_Edit; } } }<Application.Resources> <local:TreeNodeItemTemplateSelector x:Key="tnits"/> <telerik:HierarchicalDataTemplate x:Key="hdt_Level0" ItemTemplateSelector="{StaticResource tnits}" ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" Foreground="Red" /> </telerik:HierarchicalDataTemplate> <telerik:HierarchicalDataTemplate x:Key="hdt_NotLevel0" ItemTemplateSelector="{StaticResource tnits}" ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" Foreground="Blue" /> </telerik:HierarchicalDataTemplate> <local:TreeNodeItemEditTemplateSelector x:Key="tneits" /> <DataTemplate x:Key="dt_Level0_Edit"> <Grid> <StackPanel Orientation="Horizontal"> <TextBox Text="{Binding Name, Mode=TwoWay}" Foreground="DarkSalmon" /> <TextBox Text="{Binding ID, Mode=TwoWay}" Foreground="LemonChiffon" /> </StackPanel> </Grid> </DataTemplate> <DataTemplate x:Key="dt_NotLevel0_Edit"> <Grid> <StackPanel Orientation="Vertical" Background="Pink"> <TextBox Text="{Binding Name, Mode=TwoWay}" Foreground="BlueViolet" /> <TextBox Text="{Binding ID, Mode=TwoWay}" Foreground="DarkMagenta" /> </StackPanel> </Grid> </DataTemplate> </Application.Resources>public class TreeNode : INotifyPropertyChanged { private int _ID = 0; public int ID { get { return this._ID; } set { this._ID = value; RaisePropertyChanged("ID"); } } private int _Level = 0; public int Level { get { return this._Level; } set { this._Level = value; RaisePropertyChanged("Level"); } } private string _Name = "[New]"; public string Name { get { return this._Name; } set { this._Name = value; RaisePropertyChanged("Name"); } } private ObservableCollection<TreeNode> _Children = new ObservableCollection<TreeNode>(); public ObservableCollection<TreeNode> Children { get { return this._Children; } set { this.Children = value; RaisePropertyChanged("Children"); } } public TreeNode(int id, int level, string name) { this.ID = id; this.Level = level; this.Name = name; } public void AddChild(TreeNode tn) { this.Children.Add(tn); RaisePropertyChanged("Children"); } public void RemoveChild(TreeNode tn) { if (this.Children.Contains(tn)) { this.Children.Remove(tn); } RaisePropertyChanged("Children"); } public event PropertyChangedEventHandler PropertyChanged; protected void RaisePropertyChanged(string propertyName) { PropertyChangedEventHandler propertyChanged = this.PropertyChanged; if ((propertyChanged != null)) { propertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }