PRISM Adaptor for RadContextMenu

8 posts, 0 answers
  1. John Kears
    John Kears avatar
    15 posts
    Member since:
    Nov 2009

    Posted 09 Jan 2012 Link to this post


    I would like to dynamically add content to this menu if possible, however when I create a simple Adaptor and add the Region Tag to the XAML code for a RadContectMenu, it never registers it as a valid region. 

    Has anyone sucessfully created a PRISM Adaptor for a RadContextMenu?

    I get a region for the RadRibbonTab and one for the RadRibbonGroup, but there is not one for the RadContextMenu ...

    <telerik:RadRibbonTab Regions:RegionManager.RegionName="ViewTabRibbonRegion"   Name="RibbonTabName_View" Header="View">
                  <telerik:RadRibbonGroup Regions:RegionManager.RegionName="ViewTabRibbonGroupCustomRegion" Header="Custom">
                      <telerik:RadRibbonSplitButton Content="test">
                          <telerik:RadRibbonSplitButton.DropDownContent>
                              <telerik:RadContextMenu Name="RadContext" Regions:RegionManager.RegionName="ViewTestContextMenu"  BorderThickness="0">
                              </telerik:RadContextMenu>
                          </telerik:RadRibbonSplitButton.DropDownContent>
                      </telerik:RadRibbonSplitButton >
                  </telerik:RadRibbonGroup>
              </telerik:RadRibbonTab>
  2. John Kears
    John Kears avatar
    15 posts
    Member since:
    Nov 2009

    Posted 10 Jan 2012 Link to this post

    .. further and somewhat related, in that I am updated an inner element .

    I can add a RadRibbonButton to the RadRibbonGroup on the outside (i.e. RegionName = "RegionRibbonGroupOuter"), and I see it on the RibbonTab however, when I try to add the same RadRibbonButton instead to the inner RadRibbonGroup (i.e. RegionName = "RegionRibbonGroupWrapped" confined within the RadOrderedWrapPanel) it does seem to locate the Region, but I do not see the Button... 

    Unlike the MenuItem issue, this does see the inner Region whereas the MenuItem region (1st post) is not even a valid Region.  I think that is due to it being encapsulated within a DropDownContent, which as far as I can tell is of type object.

    <telerik:RadRibbonGroup Header="Ordered Wrap Pannel" Regions:RegionManager.RegionName="RegionRibbonGroupOuter" >
                       <telerik:RadOrderedWrapPanel Regions:RegionManager.RegionName="RegionWrapPanel" >
                           <telerik:RadButtonGroup Regions:RegionManager.RegionName="RegionRibbonGroupWrapped">
                                 
                           </telerik:RadButtonGroup>
                              
                       </telerik:RadOrderedWrapPanel>
                   </telerik:RadRibbonGroup>
  3. DevCraft banner
  4. John Kears
    John Kears avatar
    15 posts
    Member since:
    Nov 2009

    Posted 10 Jan 2012 Link to this post

    I am adding to Region in both scenarios to the same RegionManagerInstance and where result.TargetRegion is the name of the two regions mentioned above and ribbonButton is a valid button with image etc..

    RegionManagerInstance.AddToRegion(result.TargetRegion, ribbonButton);
  5. Tina Stancheva
    Admin
    Tina Stancheva avatar
    3298 posts

    Posted 12 Jan 2012 Link to this post

    Hello John,

    I wasn't able to reproduce this issue on our side. But if you can send us a solution that reproduces the issue we will definitely further investigate the case.

    In the meantime you can examine the attached solution that demonstrates how you can build a RibbonView control by taking advantage of PRISM. It can help you while looking for the cause for your issues.

    Also, please keep in mind that the RadContextMenu is designed to be used as a context menu so it expects a right click to open. This is why when this control is used in a RadRibbonSplitButton.DropDownContent it may cause unexpected behavior. Therefore it is better to use the RadMenu control to build the RadRibbonSplitButton.DropDownContent. You can even customize the RadMenu control and its items to look as though you've defined a ContextMenu.

    All the best,
    Tina Stancheva
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  6. John Kears
    John Kears avatar
    15 posts
    Member since:
    Nov 2009

    Posted 12 Jan 2012 Link to this post

    Hi and thank you.

    I was able to resolve some of the issues I was having.  Specifically the RadMenuItem with a RadDropDownContent by adding an underlying property to the backing ViewModel for RegionManager and then binding that to the RadContextMenu directly.  I am now able to programatically inject menu items through regionmanager.

    The other issue with the RadOrderedWrapPanel is still a bit of a mystery as although I am able to add a RadRibbonButton to the inner RadRibbonButtonGroup, it does not render, but I am almost certain the button is there.  In fact, if I add the same RadRibbonButton to the RadRibbonButtonGroup that encapsulates the RadOrderedWrapPanel element instead I do see the button. 

    I will review your attached solution to see if I am missing something obvious or not.

    Cheers
  7. Tina Stancheva
    Admin
    Tina Stancheva avatar
    3298 posts

    Posted 17 Jan 2012 Link to this post

    Hi John,

    I just wanted to ask you if the attached solution helped in getting over the issue with the RadOrderedWrapPanel? If it didn't help or you encounter other issues with the Telerik controls, please let us know.

    All the best,
    Tina Stancheva
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  8. John Kears
    John Kears avatar
    15 posts
    Member since:
    Nov 2009

    Posted 17 Jan 2012 Link to this post

    Actually I am able to add a radmenuItem to my context menu progamatically using this approach however the icon is not showing on the menu item.

    I have the following binding on the IconTemplate, and I know that there is a valid Image on the underlying ViewModel and I see a call being made to the Getter (Accessor) of that ImageSource property, however the icon does not show up.  The Header is showing up, and the Command binding also works fine (all of which are in the same underlying view model). ...

    <telerik:RadMenuItem x:Class="TestTelerik.Controls.RadMenuItemEx"
                     xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" mc:Ignorable="d"
                         Header="{Binding Label}" Command="{Binding Command}">
        <telerik:RadMenuItem.IconTemplate>
            <DataTemplate>
                <Image Source="{Binding ImageSource}" Height="16" Width="16"/>
            </DataTemplate>
        </telerik:RadMenuItem.IconTemplate>
    </telerik:RadMenuItem>

    I also tried to bind to the Image Path instead of ImageSource and it too does not render an image within the context menu.

    I am 100% postive that the image is valid. I have other radmenu items that are defined through xaml on that same menu and they do show their respective icons, just not showing the icon for those that I add through prism.
  9. John Kears
    John Kears avatar
    15 posts
    Member since:
    Nov 2009

    Posted 17 Jan 2012 Link to this post

    issue resolved ... needed to add Icon = {binding}  as per below ... works like a charm!

    <telerik:RadMenuItem x:Class="TestTelerik.Controls.RadMenuItemEx"
                     xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" mc:Ignorable="d"
                         Header="{Binding Label}" Command="{Binding Command}" Icon="{Binding}">
        <telerik:RadMenuItem.IconTemplate>
            <DataTemplate>
                <Image Source="{Binding ImageSource}" Height="16" Width="16"/>
            </DataTemplate>
        </telerik:RadMenuItem.IconTemplate>
    </telerik:RadMenuItem>
Back to Top
DevCraft banner