ComboBox inside RadMenu

6 posts, 0 answers
  1. Rakesh
    Rakesh avatar
    7 posts
    Member since:
    Oct 2008

    Posted 15 Nov 2008 Link to this post

    I have created a datatemplate for RadMenu where each menu item has a combobox.

    The Menu is displaying just fine... The problem is... when I click on combobox... it doesn't drop down.
    I see both DropDownOpened and DropDownClosed being fired back to back... I am not able to figure out who is firing DropDownClosed Event...

    any help would be appreciated...
  2. Hristo
    Admin
    Hristo avatar
    832 posts

    Posted 17 Nov 2008 Link to this post

    Hello Rakesh,

    I wasn't able to reproduce the problem you describe. Can you send us code sample so we can investigate it further. Thanks

    Sincerely yours,
    Hristo
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  3. DevCraft banner
  4. Rakesh
    Rakesh avatar
    7 posts
    Member since:
    Oct 2008

    Posted 17 Nov 2008 Link to this post

    <UserControl x:Class="SilverlightApplication4.Page" 
        xmlns:Telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls" 
                 xmlns:TelerikNav="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation" 
                 xmlns:Custom="clr-namespace:SilverlightApplication4" 
                 xmlns:ms="clr-namespace:System.Windows.Controls;assembly=System.Windows" 
                 xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
        Width="600" Height="500"
        <UserControl.Resources> 
            <Style TargetType="TelerikNav:RadMenuItem" x:Name="myStyle"
                <Setter Property="StaysOpenOnClick" Value="True"></Setter> 
            </Style> 
            <Custom:ListOfNodes x:Key="MyList"/> 
            <Custom:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/> 
            <Telerik:HierarchicalDataTemplate x:Key="Node" ItemsSource="{Binding Children}"
                <TextBlock Text="{Binding Name}" Foreground="Green"/> 
            </Telerik:HierarchicalDataTemplate> 
            <Telerik:HierarchicalDataTemplate x:Key="SelectionNode" ItemsSource="{Binding Children}"
                <Grid Width="240"
                    <Grid.ColumnDefinitions> 
                        <ColumnDefinition x:Name="SelColumn1" Width="100"></ColumnDefinition> 
                        <ColumnDefinition x:Name="SelColumn2" Width="140"></ColumnDefinition> 
                    </Grid.ColumnDefinitions> 
                    <TextBlock x:Name="SelName" Foreground="Green" Text="{Binding Name}" Grid.Column="0" Grid.ColumnSpan="1"></TextBlock> 
                    <ComboBox x:Name="selList" ItemsSource="{Binding SelectionData}" SelectedItem="{Binding SelectedData}" Grid.Column="1" Grid.ColumnSpan="1" Margin="20,0,20,0"></ComboBox> 
                </Grid> 
            </Telerik:HierarchicalDataTemplate> 
            <Telerik:HierarchicalDataTemplate x:Key="TextNode" ItemsSource="{Binding Children}"
                <Grid Width="240"
                    <Grid.ColumnDefinitions> 
                        <ColumnDefinition x:Name="TxtColumn1" Width="100"></ColumnDefinition> 
                        <ColumnDefinition x:Name="TxtColumn2" Width="140"></ColumnDefinition> 
                    </Grid.ColumnDefinitions> 
                    <TextBlock x:Name="txtName" Text="{Binding Name}" Width="50" Grid.Column="0" Grid.ColumnSpan="1"></TextBlock> 
                    <TextBox x:Name="txtData" Text="{Binding EnteredData}" Grid.Column="1" Grid.ColumnSpan="1" Margin="20,0,20,0"></TextBox> 
                </Grid> 
            </Telerik:HierarchicalDataTemplate> 
        </UserControl.Resources> 
            <Canvas x:Name="MenuCanvas" Grid.Row="0" Grid.RowSpan="1"
                <TelerikNav:RadMenu x:Name="Menu1" ClickToOpen="True" ItemsSource="{Binding Source={StaticResource MyList}}" ItemTemplateSelector="{StaticResource myDataTemplateSelector}" ItemContainerStyle="{StaticResource myStyle}"
                </TelerikNav:RadMenu> 
            </Canvas> 
    </UserControl> 
     
    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.Controls; 
    using System.Xml.Serialization; 
    using System.IO; 
    using System.Xml; 
    using System.Collections.ObjectModel; 
    using System.ComponentModel; 
     
    namespace SilverlightApplication4 
        public partial class Page : UserControl 
        { 
            public Page() 
            { 
                InitializeComponent(); 
            } 
        } 
     
        public class Node 
        { 
            protected Node _parent; 
            protected ObservableCollection<Node> _children; 
            protected string _name; 
     
            public Node(string name) 
            { 
                _name = name; 
                _children = new ObservableCollection<Node>(); 
                _children.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(_children_CollectionChanged); 
            } 
     
            public Node Parent 
            { 
                get 
                { 
                    return _parent; 
                } 
                set 
                { 
                    _parent = value; 
                } 
            } 
     
            public ObservableCollection<Node> Children 
            { 
                get 
                { 
                    return _children; 
                } 
            } 
     
            void _children_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
            { 
                foreach (Node node in e.NewItems) 
                { 
                    node.Parent = this
                } 
            } 
     
            public string Name 
            { 
                get 
                { 
                    return _name; 
                } 
            } 
        } 
     
        public class SelectionNode : Node 
        { 
            private List<string> _selectionData; 
     
            private string _selectedData; 
     
            public SelectionNode(string name) 
                : base(name) 
            { 
                _selectionData = new List<string>(); 
            } 
     
            public List<string> SelectionData 
            { 
                get { return new List<string> { "Item1""Item2""Item3" }; } 
                set { _selectionData = value; } 
            } 
     
            public string SelectedData 
            { 
                get { return _selectedData; } 
                set { _selectedData = value; } 
            } 
        } 
     
        public class TextNode : Node 
        { 
            private string _enteredData; 
     
            public TextNode(string name) 
                : base(name) 
            { 
     
            } 
     
            public string EnteredData 
            { 
                get 
                { 
                    return _enteredData; 
                } 
                set 
                { 
                    _enteredData = value; 
                } 
            } 
        } 
     
        public class TaskListDataTemplateSelector : DataTemplateSelector 
        { 
            HierarchicalDataTemplate nodeTemplate; 
            HierarchicalDataTemplate selectionNodeTemplate; 
            HierarchicalDataTemplate textNodeTemplate; 
     
            public TaskListDataTemplateSelector() 
            { 
            } 
     
            public override DataTemplate SelectTemplate(object item, DependencyObject container) 
            { 
                FrameworkElement page = Application.Current.RootVisual as FrameworkElement; 
                nodeTemplate = page.Resources["Node"as HierarchicalDataTemplate; 
                selectionNodeTemplate = page.Resources["SelectionNode"as HierarchicalDataTemplate; 
                textNodeTemplate = page.Resources["TextNode"as HierarchicalDataTemplate; 
     
                if (item.GetType() == typeof(Node)) 
                { 
                    return nodeTemplate; 
                } 
                if (item.GetType() == typeof(SelectionNode)) 
                { 
                    return selectionNodeTemplate; 
                } 
                if (item.GetType() == typeof(TextNode)) 
                { 
                    return textNodeTemplate; 
                } 
     
                return null
            } 
        } 
     
     
        public class ListOfNodes : ObservableCollection<Node> 
        { 
            public ListOfNodes() 
            { 
                Node MasterNode = new Node("New Child"); 
                Node node1 = new SelectionNode("node1"); 
                Node nodeA = new SelectionNode("nodeA"); 
                Node nodeI = new SelectionNode("nodeI"); 
                Node nodeII = new SelectionNode("nodeII"); 
                Node nodeIII = new SelectionNode("nodeIII"); 
                nodeA.Children.Add(nodeI); 
                nodeA.Children.Add(nodeII); 
                nodeA.Children.Add(nodeIII); 
                Node nodeB = new SelectionNode("nodeB"); 
                Node nodeC = new Node("nodeC"); 
                Node nodeD = new Node("nodeD"); 
                node1.Children.Add(nodeA); 
                node1.Children.Add(nodeB); 
                node1.Children.Add(nodeC); 
                node1.Children.Add(nodeD); 
                Node node2 = new Node("node2"); 
     
                Node node3 = new Node("node3"); 
     
                Node node4 = new Node("node4"); 
     
                Node node5 = new Node("node5"); 
                Node nodeX = new TextNode("nodeX"); 
                Node nodeY = new Node("nodeY"); 
                Node nodeZ = new Node("nodeZ"); 
                node5.Children.Add(nodeX); 
                node5.Children.Add(nodeY); 
                node5.Children.Add(nodeZ); 
                MasterNode.Children.Add(node1); 
                MasterNode.Children.Add(node2); 
                MasterNode.Children.Add(node3); 
                MasterNode.Children.Add(node4); 
                MasterNode.Children.Add(node5); 
                Add(MasterNode); 
            } 
        } 
     
     
     
  5. Rakesh
    Rakesh avatar
    7 posts
    Member since:
    Oct 2008

    Posted 17 Nov 2008 Link to this post

    probably the reason I see this is happening is because of MouseEnter event over RadMenuItem which is asking combobox to close.
    if you debug and put a breakpoint at DropDownOpened event handler, it seems to work fine...
  6. Rakesh
    Rakesh avatar
    7 posts
    Member since:
    Oct 2008

    Posted 17 Nov 2008 Link to this post

    Can somebody help me on this one please...
  7. Hristo
    Admin
    Hristo avatar
    832 posts

    Posted 18 Nov 2008 Link to this post

    Hi Rakesh,

    ComboBox close because it is loosing focus. We have fixed this behavior.
    Later today or at the latest tomorrow we will release Service Pack 1 for RadControls for Silverlight 2 which will include the fix.
    With the SP1 we will also release RadGridView for Silverlight 2.

    Your Telerik points have been updated for reporting this.


    Regards,
    Hristo
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Back to Top
DevCraft banner