This question is locked. New answers and comments are not allowed.
I am having an issue with a RadRibbonTab where if a tab is double clicked, in my selection changed event handler, the (sender as RadRibbonView).SelectedIndex = -1. This causes a huge blank white rectangle to appear where my button content should go.
I tried fixing this in code, but it seems for some reason that when the SelectionChanged event returns, it is called again, resulting in an infinite loop. Here is the method I am using.
Here is what's going on for a double clicked tab (double clicking tab that is already active):
Is there any way around this, or should I do something different in my code? I tried using if (e.AddedItems.Count < 1) instead of if (ribbonView.SelectedIndex < 0), this results in the same issue.
What can I do to make my ribbonView buttons not disappear into a huge white rectangle on double click?
Thanks,
I tried fixing this in code, but it seems for some reason that when the SelectionChanged event returns, it is called again, resulting in an infinite loop. Here is the method I am using.
private void ribbonView_SelectionChanged(object sender, RadSelectionChangedEventArgs e)
{
RadRibbonTab selectedTab = e.AddedItems.Count > 0 ? e.AddedItems[0] as RadRibbonTab : e.RemovedItems[0] as RadRibbonTab;
if (ribbonView.SelectedIndex < 0) ribbonView.SelectedItem = selectedTab;
if (selectedTab != null)
{
// no code
}
}
Here is what's going on for a double clicked tab (double clicking tab that is already active):
First Click:
Nothing happens (tab already active)
Second Click:
Enter SelectionChanged, e.AddedItems.Count = 0, e.RemovedItems.Count = 1
SelectedIndex == -1, ribbonView.SelectedItem = selectedTab (not null)
Enter new SelectionChanged, e.AddedItems.Count = 1, e.RemovedItems.Count = 0
skip assignment to ribbonView.SelectedItem (SelectedIndex == 0)
return
return
Instantly back into SelectionChanged handler again, with e.AddedItems.Count = 0, e.RemovedItems.Count = 1
SelectedIndex == -1, ribbonView.SelectedItem = selectedTab (not null)
Enter SelectionChanged again...
Result:
The call stack oscillates forever between 2 active calls and 1 active call to the selectionChanged handler.
Is there any way around this, or should I do something different in my code? I tried using if (e.AddedItems.Count < 1) instead of if (ribbonView.SelectedIndex < 0), this results in the same issue.
What can I do to make my ribbonView buttons not disappear into a huge white rectangle on double click?
Thanks,