I am trying to implement your example of a context menu on a tree view. When I have two tree views, Right Click and Edit on an item make it in edit mode and back immediately, whereas editing an item with F2 works as it should.
If one of the tree views doesn't contain any items, entering in edit mode with a right click on the other tree view works well.
In your sample solution Examples.ContextMenu.CS, if I add a second tree view I can edit via the context menu on both of thems without problems.
I am using RadControls_for_Silverlight_2009_1_0413, with Silverlight 2. The problems occurs with IE6/7, Firefox 3.0.10 and Windows 2000 and XP.
Can you tell me what is missing in my solution ? Thanks you.
Here is how to reproduce the bug :
Page.xaml
Page.xaml.cs
If one of the tree views doesn't contain any items, entering in edit mode with a right click on the other tree view works well.
In your sample solution Examples.ContextMenu.CS, if I add a second tree view I can edit via the context menu on both of thems without problems.
I am using RadControls_for_Silverlight_2009_1_0413, with Silverlight 2. The problems occurs with IE6/7, Firefox 3.0.10 and Windows 2000 and XP.
Can you tell me what is missing in my solution ? Thanks you.
Here is how to reproduce the bug :
Page.xaml
<UserControl x:Class="SilverlightApplication2.Page" |
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
xmlns:telerikNavigation="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation" |
Width="600" Height="400"> |
<Grid x:Name="LayoutRoot" Background="White"> |
<StackPanel Orientation="Horizontal"> |
<telerikNavigation:RadTreeView x:Name="xTreeViewA" IsEditable="True"> |
<telerikNavigation:RadContextMenu.ContextMenu> |
<telerikNavigation:RadContextMenu> |
<telerikNavigation:RadMenuItem Header="Add New Item"> |
<telerikNavigation:RadMenuItem Header="Add Sibling" /> |
<telerikNavigation:RadMenuItem Header="Add Child" /> |
</telerikNavigation:RadMenuItem> |
<telerikNavigation:RadMenuItem Header="Delete Item" /> |
<telerikNavigation:RadMenuItem Header="Edit" /> |
</telerikNavigation:RadContextMenu> |
</telerikNavigation:RadContextMenu.ContextMenu> |
<telerikNavigation:RadTreeViewItem Header="Root"> |
<telerikNavigation:RadTreeViewItem Header="Folder"> |
<telerikNavigation:RadTreeViewItem Header="File" /> |
<telerikNavigation:RadTreeViewItem Header="File" /> |
</telerikNavigation:RadTreeViewItem> |
</telerikNavigation:RadTreeViewItem> |
</telerikNavigation:RadTreeView> |
<telerikNavigation:RadTreeView x:Name="xTreeViewB" IsEditable="True"> |
<telerikNavigation:RadContextMenu.ContextMenu> |
<telerikNavigation:RadContextMenu> |
<telerikNavigation:RadMenuItem Header="Add New Item"> |
<telerikNavigation:RadMenuItem Header="Add Sibling" /> |
<telerikNavigation:RadMenuItem Header="Add Child" /> |
</telerikNavigation:RadMenuItem> |
<telerikNavigation:RadMenuItem Header="Delete Item" /> |
<telerikNavigation:RadMenuItem Header="Edit" /> |
</telerikNavigation:RadContextMenu> |
</telerikNavigation:RadContextMenu.ContextMenu> |
<telerikNavigation:RadTreeViewItem Header="Root"> |
<telerikNavigation:RadTreeViewItem Header="Folder"> |
<telerikNavigation:RadTreeViewItem Header="File" /> |
<telerikNavigation:RadTreeViewItem Header="File" /> |
</telerikNavigation:RadTreeViewItem> |
</telerikNavigation:RadTreeViewItem> |
</telerikNavigation:RadTreeView> |
</StackPanel> |
</Grid> |
</UserControl> |
Page.xaml.cs
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 Telerik.Windows; |
using Telerik.Windows.Controls; |
using Telerik.Windows.Input; |
namespace SilverlightApplication2 |
{ |
public partial class Page : UserControl |
{ |
public Page() |
{ |
InitializeComponent(); |
xTreeViewA.AddHandler(RadMenuItem.ClickEvent, new RoutedEventHandler(OnMenuItemClicked)); |
xTreeViewB.AddHandler(RadMenuItem.ClickEvent, new RoutedEventHandler(OnMenuItemClicked)); |
Mouse.AddMouseDownHandler(this, OnRightMouseButtonUp); |
} |
private void OnRightMouseButtonUp(object sender, Telerik.Windows.Input.MouseButtonEventArgs e) |
{ |
RadTreeViewItem treeItem = null; |
Point mousePosition = e.GetPosition(null); |
foreach (UIElement item in VisualTreeHelper.FindElementsInHostCoordinates(mousePosition, this)) |
{ |
treeItem = item as RadTreeViewItem; |
if (treeItem != null) |
{ |
break; |
} |
} |
if (treeItem != null) |
{ |
treeItem.IsSelected = true; |
} |
} |
private void OnMenuItemClicked(object sender, RoutedEventArgs args) |
{ |
RadTreeView vParentTreeView = sender as RadTreeView; |
RadRoutedEventArgs e = args as RadRoutedEventArgs; |
RadMenuItem item = e.OriginalSource as RadMenuItem; |
if ((item != null)) |
{ |
if (item.Header != null) |
{ |
if (item.Header.ToString() == "Add Sibling") |
{ |
RadTreeViewItem treeViewItem = vParentTreeView.SelectedItem as RadTreeViewItem; |
if (treeViewItem != null) |
{ |
if (treeViewItem.Parent is RadTreeViewItem) |
{ |
(treeViewItem.Parent as RadTreeViewItem).Items.Add(new RadTreeViewItem() { Header = "New Item" }); |
} |
else |
{ |
(treeViewItem.Parent as RadTreeView).Items.Add(new RadTreeViewItem() { Header = "New Item" }); |
} |
} |
} |
if (item.Header.ToString() == "Add Child") |
{ |
RadTreeViewItem treeViewItem = vParentTreeView.SelectedItem as RadTreeViewItem; |
if (treeViewItem != null) |
{ |
treeViewItem.Items.Add(new RadTreeViewItem() { Header = "New Item" }); |
treeViewItem.IsExpanded = true; |
} |
} |
if (item.Header.ToString() == "Delete Item") |
{ |
RadTreeViewItem treeViewItem = vParentTreeView.SelectedItem as RadTreeViewItem; |
if (treeViewItem != null) |
{ |
if (treeViewItem.ParentItem != null) |
{ |
treeViewItem.ParentItem.Items.Remove(treeViewItem); |
} |
else |
{ |
treeViewItem.ParentTreeView.Items.Remove(treeViewItem); |
} |
} |
} |
if (item.Header.ToString() == "Edit") |
{ |
RadTreeViewItem treeViewItem = vParentTreeView.SelectedItem as RadTreeViewItem; |
if (treeViewItem != null) |
{ |
treeViewItem.BeginEdit(); |
} |
} |
} |
} |
} |
} |
} |