Like many others I've been looking for a solution to this problem and I've decided to try Kim Ho's suggestion inhttp://ko.infragistics.com/community/forums/p/25649/95887.aspx
This has worked reasonably well...
... except for a few issues:
1. The fly-out menu is not stable. If move the mouse back and forth over the boundary between "three" and "A", you'll find a spot where the fly-out menu starts flickering. Sometimes only once, but with some trial and error you'll get it to flicker constantly. There are other such spots, too. How can we avoid this?
2. The shadow is not coming along. For use with the UltraDropDownButton I will hide it, but for a complete solution there should be a way to show it correctly.
3. How can I find out whether a menu has submenus (i.e. needs the space for the right-pointing arrows) or not -- in the CreationFilter. IOW, how can I tell in the CreationFilter whether I'm looking at the pull-down menu (or menu item) or at a fly-out, so that I can adjust for the absence of the arrows?
4. I've found the measurements that I used in my CreationFilter by trial and error, and they're not pixels. What's their unit, and is there a way to retrieve the magic numbers programmatically?
5. Bonus question: Is there a way to make "A" the default menu item (i.e. show it in bold and select it, when the user clicks on "three")?
TIA,Hans
[Composing a message is a pain here:
1. I pasted the screenshot into the message, and it's still (!) showing in the editor, but the Post shows a broken image.
2. I tried to edit the post and add the screenshot as a file. This seems to have worked and the attached .png is showing, but now the sample project .zip is gone. I'm trying to attach it to this comment now...]
Hello,
Thank you for the provided sample.
Is it enough just to move the MenuItems on the right, isn't it ? To do this please replace all the code from AfterCreatedChildElements method of your CreationFilterClass with:
if (parent is TextUIElement && parent.Parent.GetContext().GetType().Name == "ToolMenuItem")
{
parent.Rect = new Rectangle(new Point(parent.Parent.Rect.X + 1, parent.Rect.Y), parent.Rect.Size);
}
Please evaluate this suggestion and let me know if you have any further questions.