Dynamically created menu woes

6 posts, 0 answers
  1. Dasha
    Dasha avatar
    80 posts
    Member since:
    Aug 2010

    Posted 01 Aug 2012 Link to this post

    Hello,

    I'm a big fan of Telerik, especially for how easy and clean are all the controls and their integration.  I was very surprised to run into as much trouble as I did when trying to dynamically create a Silverlight RadMenu and add it to a StackPanel.  We've been adding Buttons to the StackPanel without a single problem, so I thought what can be difficult about adding a RadMenu?  For some reason I can't get it to happen!  I can't find any helpful examples, so maybe you could help me out.  This is what I'm trying to do:

    StackPanel spButton = new StackPanel();
    TextBlock txtButtonText = new TextBlock();
    Image img = new Image();
    Double BtnWidth = 125;
    Double BtnHeight = 25;
     
    StackPanel ganttMainToolBar = null;
    ganttMainToolBar = new StackPanel();
    ganttMainToolBar.Name = "ganttMainToolBar";
    ganttMainToolBar.Orientation = Orientation.Horizontal;
    ganttMainToolBar.VerticalAlignment = VerticalAlignment.Center;
    ganttMainToolBar.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
    ganttMainToolBar.Width = _ganttWidth - 5;
    ganttMainToolBar.Height = BtnHeight;
    ganttMainToolBar.SetValue(Grid.RowProperty, 0);
    ganttMainToolBar.SetValue(Grid.ColumnProperty, 0);
    ganttMainToolBar.Margin = new Thickness(5, 5, 0, 5);
    ganttMainToolBar.Tag = "100";
     
    RadMenu radMenu = new RadMenu();
    radMenu.Name = "radMenu";
    radMenu.Tag = "111";
    radMenu.Height = BtnHeight;
    radMenu.Width = 200;
    StyleManager.SetTheme(radMenu, new VistaTheme());
     
    RadMenuItem topLevelItem = new RadMenuItem();
    topLevelItem.Name = "file";
    topLevelItem.Header = "File";
    topLevelItem.Tag = "1111";
    topLevelItem.Height = BtnHeight;
    topLevelItem.Width = 100;
    StyleManager.SetTheme(topLevelItem, new VistaTheme());
    radMenu.Items.Add(topLevelItem);
     
    ganttMainToolBar.Children.Add(radMenu);
     
    #region new item
    Button btnNewButton = new Button();
    btnNewButton.Name = "AddNewItemButton";
    spButton = new StackPanel();
    spButton.Orientation = Orientation.Horizontal;
    spButton.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
    spButton.VerticalAlignment = System.Windows.VerticalAlignment.Center;
    img = new Image();
    img.Source = new BitmapImage(new Uri("add2.png", UriKind.Relative));
    img.Width = 16; img.Height = 16;
    img.Margin = new Thickness(5, 0, 5, 0);
    spButton.Children.Add(img);
    txtButtonText = new TextBlock();
    txtButtonText.Text = "Add New Item";
    txtButtonText.Margin = new Thickness(5, 0, 5, 0);
    spButton.Children.Add(txtButtonText);
    btnNewButton.Content = spButton;
    btnNewButton.Margin = new Thickness(0, 0, 0, 0);
    btnNewButton.Tag = "104";
    btnNewButton.Click += new RoutedEventHandler(GanttTable_AddTasks);
    btnNewButton.IsEnabled = DisableBtnForSnapShot();
    btnNewButton.Width = BtnWidth;
    ganttMainToolBar.Children.Add(btnNewButton);
    ToolTipService.SetToolTip(btnNewButton, "Add New Item");
    #endregion
     
     
    LayoutRoot.Children.Add(ganttMainToolBar);


    All the Buttons show up ok, but not the RadMenu!  The most I can get to happen is to get the space allocated on the StackPanel, i.e. all the buttons are shifted to the right, as if something invisible is there.

    Please help!
  2. Dasha
    Dasha avatar
    80 posts
    Member since:
    Aug 2010

    Posted 01 Aug 2012 Link to this post

    I also put together a simple project where I try to create a static menu without any luck either.  I'm obviously missing some vital piece, but I can't figure out what it is!  We're running on Silverlight 4, would that make a difference?  Can I sent the project to you? I can't seem to attach it to the post.
  3. DevCraft banner
  4. Rosen Vladimirov
    Admin
    Rosen Vladimirov avatar
    640 posts

    Posted 03 Aug 2012 Link to this post

    Hi,

    We have tested this scenario based on your code but we were unable to reproduce the problem. I`m sending you the simple project we used and how the output looks like. I tested it with Silverlight 4 and Silverlight 5 and it is working fine.
    I noticed that the problem may occur if the Width and Height of the components are not set correctly (too low or too large values for different controls). Also the UserControl width and height should be set accordingly. If you check the project I`m sending, you`ll notice that we are using hard-coded values for these properties. It is a good idea to check the values you are using and maybe to use XAML Spy after starting the application to check if all controls are populated. Also you may check the margins - too large values can cause such strange behaviour.

    Please try this project and inform us if you face any problems.

    Greetings,
    Rosen Vladimirov
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  5. Dasha
    Dasha avatar
    80 posts
    Member since:
    Aug 2010

    Posted 03 Aug 2012 Link to this post

    Hello Rosen,

    Thank you so much for your reply!  I tested your solution, and I'm still seeing the same type of result, see my attached image.  Makes me think I'm using the wrong dll, could that be the reason?  I didn't change anything in your same except reassign the Telerik assembly references.  I'm using the dll's from the RadControls_for_Silverlight4_2012_2_0725_DEV_hotfix.  Any other ideas about what could be wrong in my environment?
  6. Dasha
    Dasha avatar
    80 posts
    Member since:
    Aug 2010

    Posted 03 Aug 2012 Link to this post

    I figured it out! I was in fact using the wrong dll's!  I was using the dlls from the "RadControls_for_Silverlight4_2012_2_0725_DEV_hotfix\Binaries.NoXaml" folder, which were wrong.  I needed to use the "RadControls_for_Silverlight4_2012_2_0725_DEV_hotfix\Binaries" folder.  Now everything is working properly.  Thank you so much for the help.
  7. Rosen Vladimirov
    Admin
    Rosen Vladimirov avatar
    640 posts

    Posted 03 Aug 2012 Link to this post

    Hi Dasha,

    It looks like you are using the dll files from Binaries.noXAML and this is preventing the RadMenu from showing. In this case you have two options:
    1) use the dlls from Binaries directory
    2) when you are using these binaries you have to add theme for the specific control. In this case you have to add to your project the Telerik.Windows.Controls.Navigation.xaml file from Theme.Implicit directory (you`ll have to choose one of the themes) and after that add the following piece of code in your App.xaml file:
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Telerik.Windows.Controls.Navigation.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

    To be more clear I`m sending you the previous example with added Telerik.Windows.Controls.Navigation.xaml file. Please test it - it should be working now.

    Don`t hesitate to contact us in case of any problems and concerns.

    Kind regards,
    Rosen Vladimirov
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

Back to Top
DevCraft banner