This is a migrated thread and some comments may be shown as answers.

Problem with DropDownButton and ContextMenu

8 Answers 379 Views
RibbonView and RibbonWindow
This is a migrated thread and some comments may be shown as answers.
Patrick
Top achievements
Rank 2
Iron
Iron
Iron
Patrick asked on 30 Apr 2014, 08:38 AM
Hello,
in my ribbon, I have added a DropDownButton that contains a ContextMenu, following the example in Telerik documentation.
This works well... until the menu contains a sub menu. In this case, as soon as the sub menu is opened, the menu is not closed when we click outside it, only the sub menu is closed.
Patrick

8 Answers, 1 is accepted

Sort by
0
Petar Marchev
Telerik team
answered on 01 May 2014, 11:01 AM
Hello Patrick,

I created a small test project and I was unable to reproduce the issue you have described. I am sending the project to you for a reference.

On the click of the drop down button a context menu is shown. When I hover over Menu 2 a sub menu is opened (A, B and C). When I go to click the click here button, the context menu and the sub menu are collapsed. Try to run the project and see if you get the same behavior (I tested this with binaries from the last official SP release). If you need further assistance I will ask that you provide a small project that we can run and that reproduces the glitch. Then we can start looking for solutions. 

Regards,
Petar Marchev
Telerik
 
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
 
0
Patrick
Top achievements
Rank 2
Iron
Iron
Iron
answered on 01 May 2014, 11:50 AM
Hello Petar,
thanks for your answer.
I've made some tests and the main difference between my application and your test case is that the content of the drop down button is a control that contains the menu. In my case it is a control to manage the resources, but it can be seen with a simple Border.

If you replace MainWindow.xaml with the following code, you will see the problem:
<Window x:Class="wpf_RibbonView_814947.MainWindow"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <telerik:RadRibbonDropDownButton Text="drop down button" VerticalAlignment="Top">
            <telerik:RadRibbonDropDownButton.DropDownContent>
                <Border>
                    <telerik:RadContextMenu>
                        <telerik:RadContextMenu.Items>
                            <telerik:RadMenuItem Header="Menu 1" />
                            <telerik:RadMenuItem Header="Menu 2" ItemsSource="ABC" />
                        </telerik:RadContextMenu.Items>
                    </telerik:RadContextMenu>
                </Border>
            </telerik:RadRibbonDropDownButton.DropDownContent>
        </telerik:RadRibbonDropDownButton>
        <Button Content="click here" HorizontalAlignment="Right" VerticalAlignment="Top" />
    </Grid>
</Window>

Patrick
0
Petar Marchev
Telerik team
answered on 01 May 2014, 02:29 PM
Hi Patrick,

Thank you for the clarification. I was now able to reproduce the issue.

The reason this happens is that the context menu loses focus when the submenus open and it cannot detect a later click outside of its boundaries. This surely looks like a bug but I have currently put it for investigation because we need to check if this is a new bug or a different representation of an already logged bug. I hope that you will be able to work this around by not inserting an additional Border element and leave the DropDownContent to be a RadContextMenu.

Regards,
Petar Marchev
Telerik
 
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
 
0
Patrick
Top achievements
Rank 2
Iron
Iron
Iron
answered on 01 May 2014, 02:35 PM
Hello Petar,
unfortunately, I can't remove the control in between because, as I said, it is not a Border but a control to manage the resources.
Can you please add a follow up after your investigation?
Patrick
0
Petar Marchev
Telerik team
answered on 05 May 2014, 12:15 PM
Hello Patrick,

We will contact you again when we have a certain statement for this case. Until we fix the issue, you can try and use the work around I implemented in the attached project. I have used the MouseDown event of the window to see if the drop down button is opened and if the user clicked somewhere outside the drop down button. Have in mind that this code is not well tested so carefully review if it is possible to include some modification of it in your actual application.

Regards,
Petar Marchev
Telerik
 
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
 
0
Sugumar
Top achievements
Rank 1
answered on 26 Feb 2015, 01:14 PM
Hi,

I had same problem and resolved using below mentioned implementation.
Posting it here which may help for others. :-)

1. Add MouseLeave acb for the meu item.
2. Add delegate command in ViewModel and subsribe it.
3. Set IsOpen of the pull down menu as False inside the event subscribed in view model.

Regards,
Sugumar P
0
Sugumar
Top achievements
Rank 1
answered on 26 Feb 2015, 01:17 PM
Hi,
I had same same issue and resolved by using below mentioned implementation.
Posting it here which may helpful for others :-)

1. Add MouseLeave acb for context menu.
2. Add delegate command in ViewModel and subscribe the event.
3. Set IsOpen of the pull down menu as false in the event.

Regards,
Sugumar P
0
Petar Mladenov
Telerik team
answered on 27 Feb 2015, 10:06 AM
Hi Sugumar,

Thank you for this suggestion.
However, I want to underline the main usage of RadContextMenu. It is to use the RadContextmenu.ConextMenu attached property on some UI Control, for example like so:
<TextBox Width="200"
             VerticalAlignment="Top"
             ContextMenu="{x:Null}">
        <telerik:RadContextMenu.ContextMenu>
            <telerik:RadContextMenu />
        </telerik:RadContextMenu.ContextMenu>
    </TextBox>

Setting the RadContextMenu as direct content in DropDownButton could lead to various focus issues which need additional code to bypass. For direct content in Popups/DropDownContents its better to use RadMenu instead of RadContextMenu.

Additional note on the issue Patrick posted here last year. We consider this scenario as not supported out of the box in our controls suite. It's mainly because nesting ContextMenu directly in DropDownContent should not be supported because of the unpredictable focus issues that might occur.

Regards,
Petar Mladenov
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
RibbonView and RibbonWindow
Asked by
Patrick
Top achievements
Rank 2
Iron
Iron
Iron
Answers by
Petar Marchev
Telerik team
Patrick
Top achievements
Rank 2
Iron
Iron
Iron
Sugumar
Top achievements
Rank 1
Petar Mladenov
Telerik team
Share this question
or