Backstage does not cover StatusBar

Ribbon for WPF Forum

Posted 13 years ago by Owen Christensen - Software Engineer, Minitab Inc.
Version: 11.1.0540
Platform: .NET 4.0
Environment: Windows 7 (64-bit)
Avatar
The Backstage does not seem to cover the RibbonWindow StatusBar. Is this by design? The Office 2011 suite has all of their backstages cover the StatusBar.

Comments (10)

Posted 13 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Owen,

That is by design in our samples at least. Ribbon was originally created for Office 2007, before Office 2010 was released. The Office 2007 style's RibbonWindows always integrated the statusbar with the windows's border at the bottom. So we have the RibbonWindow.StatusBar property you can set to achieve that effect.

For Office 2010 themes, you'd want to just put the statusbar right in your main window content instead, which is what Microsoft does in Office 2010. Then backstage will cover it too.


Actipro Software Support

Posted 13 years ago by Owen Christensen - Software Engineer, Minitab Inc.
Avatar
Are there any plans to make this match the current theme automatically? ie if a 2010 theme is selected for the Ribbon it would automatically span the StatusBar container as well?
Posted 13 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Owen,

Sorry but not in the near term. In the one form, StatusBar is part of the Window's template. In the other, it's part of the Windows's content. Typically you would only design your themes to support one set of themes or the other so you'd just include the StatusBar where appropriate for which theme to support.


Actipro Software Support

Posted 13 years ago by Owen Christensen - Software Engineer, Minitab Inc.
Avatar
Fair enough. Thanks!
Posted 13 years ago by Jan Ambroz
Avatar
Dear Actipro support team,

I am not sure if this is the right way to contact Actipro Support, but my question is nearly the same as the question posted here, so I am trying to open the case again.

You may not have any reason to solve this, as it really can be solved by adding the status bar in the window's content. This is true in all but one case. If you use ResizeMode="CanResizeWithGrip" with the ribbon window, you are left with two, both unusable results.

The first one is to go with backstage not covering the status bar. The resize grip is then OK, fully working. But this is not usable, as the status bar has really to be covered by the backstage.

The second one is to put the status bar in the window's content, but then the resize grip will show as a part of unexistent status bar at the bottom of the window, so you get absolutely unusable UI (and, still the weird second status bar will not be covered by the backstage tab).

So, I found only one working solution, so far, that is to bind the IsApplicationMenuOpen property to both Window.ResizeMode and StatusBar.Visibility properties using custom value convertors, so the status bar will collapse and the resize mode will change appropriately to hide the grip, whenever the app menu is open. Yes, this works, but the window is slacking like hell whenever you click on the application menu (this is partly caused by MS and switching the ResizeMode at runtime, but still ...).

The conclusion is that this should really be fixed (or at least the styles should be adjusted appropriately; I really don't need to switch between 2007 and 2010 modes at runtime, so replacing the styles would work for me). I hope you will understand how this is important.

Best regards,

Jan Ambroz.
Posted 13 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Jan,

I'm not sure I understand your second point about "the resize grip will show as a part of unexistent status bar at the bottom of the window". If you move the StatusBar to be part of the Window's content and ensure it's docked on the bottom, then the resize grip would still be rendered on top of the StatusBar. You can add a Padding of "0,0,14,0" to the StatusBar if it's content renders over the resize grip.

There's no need to toggle the ResizeMode or StatusBar's visiblity if done this way, as the Backstage will cover both the StatusBar and the ResizeGrip.

If that doesn't help please put together a small sample project that reproduces your issue and email it over then we can take a closer look. Be sure to remove any executables or change the extension of the zip file to ensure it gets past our email filters.


Actipro Software Support

Posted 13 years ago by Jan Ambroz
Avatar
I have tried to dock the StatusBar to the bottom (I placed the whole window content into a DockPanel, made Ribbon dock to the top and the StatusBar dock to the bottom - maybe this is a wrong approach). I even tried this in a clean project with only RibbonWindow, Ribbon and StatusBar present. The behaviour is always the same. Whenever the ResizeMode is changed to CanResizeWithGrip, another status bar appears at the bottom of the window with the resize grip in the right hand corner only. The backstage then covers my own StatusBar (as it is part of the window, docked to bottom), but not the another, strange status bar.

Maybe I miss something really basic which is actually preventing me from doing this right. Any help would be really appreciated.
Posted 13 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Jan,

I tried this simple code in the latest builds and it looks ok:
<ribbon:RibbonWindow x:Class="WpfApplication1.Window3"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ribbon="http://schemas.actiprosoftware.com/winfx/xaml/ribbon"
    Title="Window3" Height="400" Width="500" ResizeMode="CanResizeWithGrip">

    <DockPanel>
        <ribbon:Ribbon DockPanel.Dock="Top">
            <ribbon:Ribbon.ApplicationMenu>
                <ribbon:Backstage></ribbon:Backstage>
            </ribbon:Ribbon.ApplicationMenu>
            <ribbon:Tab Label="Home">
                <ribbon:Group Label="Group">
                        
                </ribbon:Group>                    
            </ribbon:Tab>
        </ribbon:Ribbon>
        
        <StatusBar DockPanel.Dock="Bottom">
            <StatusBarItem>Test</StatusBarItem>
        </StatusBar>
        
        <TextBox/>
    </DockPanel>

</ribbon:RibbonWindow>
Are you sure you're running the latest maintenance release? I believe we did tweak something related to this recently.


Actipro Software Support

Posted 13 years ago by Jan Ambroz
Avatar
Thank you for the attached sample, I was indeed using an old version of the components. Now it works almost as expected. Still, one (kind of) bug remains.

If you set IsGlassEnabled="False" (our users use WinXP still), then the resize grip will not work. It will show as expected, the backstage will work fine etc. Just the grip won't change the mouse cursor and you can't drag it to resize the window. The same happens using your sample (and setting IsGlassEnabled="False" or running on XP).

Anyway, thank you very much so far.

Best regards, Jan Ambroz.
Posted 13 years ago by Actipro Software Support - Cleveland, OH, USA
Avatar
Hi Jan,

Thanks, we had to make a couple tweak to get it working there. The updates will be in the next version.


Actipro Software Support

The latest build of this product (v24.1.2) was released 2 days ago, which was after the last post in this thread.

Add Comment

Please log in to a validated account to post comments.