Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6752591
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T13:03:46+00:00 2026-05-26T13:03:46+00:00

I have a RibbonWindow where my WindowStyle is set to None, so what I

  • 0

I have a RibbonWindow where my WindowStyle is set to None, so what I can’t understand is what have happened to the Grip to resize the window?! Even if my controls have their Margin set to 0 in the Bottom part of them will be hidden… It’s a strange behaviour.

But if I change the bottom Margin of the controls it’s ok, but the Grip can’t be seen anyway, probably because part of the client area is hidden…

I have to say, if a have a WPF Window, this doesn’t happen, it only happens with the RibbonWindow. And I am using the RibbonWindow because the Ribbon has other look in the proper window.

So what can I do to solve the problem with the Grip?

Some of my code…

<rib:RibbonWindow x:Class="MyApp.Views.MainView"
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  xmlns:rib="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
                  AllowsTransparency="True"
                  Background="Transparent"
                  Height="750"
                  ResizeMode="CanResizeWithGrip"
                  Width="1000"
                  WindowStartupLocation="CenterScreen"
                  WindowStyle="None">

    <Grid Margin="0, 0, 0, 20">
        <Border Background="Black"
                CornerRadius="5"
                Opacity="0.5"/>
    </Grid>
</rib:RibbonWindow>

Thanks in advance!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T13:03:46+00:00Added an answer on May 26, 2026 at 1:03 pm

    This was intriguing to debug. Turns out that the style for the window has a bug: if the system is defined to have IsGlassEnabled == true (in Win7 Aero theme makes it true) then the window relies on the Microsoft.Windows.Shell.WindowChrome (from Microsoft.Windows.Shell assembly) to draw the border and the top buttons of the window; and this WindowChrome has its GlassFrameThickness property set to 8,30,8,8 in combination with NonClientFrameEdges set to Bottom.

    What happens is that because of AllowsTransparency == true the glass border is transparent but the window still “cuts” its thickness from the overall window size because the WindowChrome defines NonClientFrameEdges="Bottom", thus cutting the ResizeGrip from view.

    You can see this if you (frantically) drag the window over your screen – you’ll see the ResizeGrip flickering.

    To solve this we need to define a new WindowChrome with NonClientFrameEdges="None" (or GlassFrameThickness = 0 or both) and assign it to the window only when IsGlassEnabled == true && AllowsTransparency == true (I’m using application resources defined in App.xaml and defining only NonClientFrameEdges="None"):

    1. Add these namespaces to App.xaml:
        xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
        xmlns:ribbonPrimitives="clr-namespace:Microsoft.Windows.Controls.Ribbon.Primitives;assembly=RibbonControlsLibrary"
        xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Microsoft.Windows.Shell"
    
    2. Add these resources:
        <ribbonPrimitives:RibbonWindowSmallIconConverter x:Key="RibbonWindowSmallIconConverter" />
        <shell:WindowChrome x:Key="WindowChromeWithGlassAndTransparency"
                            NonClientFrameEdges="None" />
        <Style x:Key="MyStyle"
               TargetType="{x:Type ribbon:RibbonWindow}">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=IsGlassEnabled, Source={x:Static shell:SystemParameters2.Current}}"
                                   Value="True" />
                        <Condition Binding="{Binding AllowsTransparency, RelativeSource={RelativeSource Mode=Self}}"
                                   Value="False" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="shell:WindowChrome.WindowChrome"
                            Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type ribbon:Ribbon}, ResourceId=WindowChromeAeroWithGlass}}" />
                </MultiDataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=IsGlassEnabled, Source={x:Static shell:SystemParameters2.Current}}"
                                   Value="True" />
                        <Condition Binding="{Binding AllowsTransparency, RelativeSource={RelativeSource Mode=Self}}"
                                   Value="True" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="shell:WindowChrome.WindowChrome"
                            Value="{DynamicResource WindowChromeWithGlassAndTransparency}" />
                </MultiDataTrigger>
                <DataTrigger Binding="{Binding Path=IsGlassEnabled, Source={x:Static shell:SystemParameters2.Current}}"
                             Value="True">
                    <!--This is the original setter of the chrome that makes all the trouble-->
                    <!--<Setter Property="shell:WindowChrome.WindowChrome"
                        Value="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type ribbon:Ribbon}, ResourceId=WindowChromeAeroWithGlass}}" />-->
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ribbon:RibbonWindow}">
                                <Grid>
                                    <Border Name="PART_ClientAreaBorder"
                                            Background="{TemplateBinding Control.Background}"
                                            BorderBrush="{TemplateBinding Control.BorderBrush}"
                                            BorderThickness="{TemplateBinding Control.BorderThickness}"
                                            Margin="{Binding Path=WindowNonClientFrameThickness, Source={x:Static shell:SystemParameters2.Current}}" />
                                    <Border BorderThickness="{Binding Path=(shell:WindowChrome.WindowChrome).ResizeBorderThickness, RelativeSource={RelativeSource TemplatedParent}}">
                                        <Grid>
                                            <Image Name="PART_Icon"
                                                   shell:WindowChrome.IsHitTestVisibleInChrome="True"
                                                   HorizontalAlignment="Left"
                                                   VerticalAlignment="Top"
                                                   Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon, Converter={StaticResource RibbonWindowSmallIconConverter }}"
                                                   Width="{Binding Path=SmallIconSize.Width, Source={x:Static shell:SystemParameters2.Current}}"
                                                   Height="{Binding Path=SmallIconSize.Height, Source={x:Static shell:SystemParameters2.Current}}" />
                                            <AdornerDecorator>
                                                <ContentPresenter Name="PART_RootContentPresenter" />
                                            </AdornerDecorator>
                                            <ResizeGrip Name="WindowResizeGrip"
                                                        shell:WindowChrome.ResizeGripDirection="BottomRight"
                                                        HorizontalAlignment="Right"
                                                        VerticalAlignment="Bottom"
                                                        Visibility="Collapsed"
                                                        IsTabStop="False" />
                                        </Grid>
                                    </Border>
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <Trigger Value="{x:Null}"
                                             Property="Icon">
                                        <Setter TargetName="PART_Icon"
                                                Property="Source"
                                                Value="/RibbonControlsLibrary;component/Images/GlassyDefaultSystemIcon.png" />
                                    </Trigger>
                                    <Trigger Property="WindowState"
                                             Value="Maximized">
                                        <Setter TargetName="PART_Icon"
                                                Property="Margin"
                                                Value="0,2,0,0" />
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="ResizeMode"
                                                       Value="CanResizeWithGrip" />
                                            <Condition Property="WindowState"
                                                       Value="Normal" />
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="WindowResizeGrip"
                                                Property="Visibility"
                                                Value="Visible" />
                                    </MultiTrigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    
    3. In your window use the new style:
        <rib:RibbonWindow ....
                          Style="{StaticResource MyStyle}">
    
            ....
        </rib:RibbonWindow>
    

    The DataTrigger is almost as is from the original style, with only one modification: I’ve commented the setter for the WindowChrome.

    The MultiDataTriggers are my addition. They check the value of AllowsTransparency property and apply the right WindowChrome: the original if the value is false and one with NonClientFrameEdges="None" (you can also use GlassFrameThickness = 0 instead) if the value is true.

    NOTE: this solution removes the ability to resize the window using the edges, resizing of the window is done only by the ResizeGrip.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a WPF ribbon application using Microsoft.Windows.Controls.Ribbon . I can set the view
I have create a Window with Ribbons (2010 - Microsoft.Windows.Controls.Ribbon ). It looks like
Have some task with Infragistics UltraGrid requirement. Found Infragistics controls' list on their site,
Im usign a Ribbon Window and in the content area beneath I have a
I want to center the title of my RibbonWindow, and not have it aligned
Have the following cronjob set up in root's crontab: (centos 5.x) 2 * *
Have a long running set of discrete tasks: parsing 10s of thousands of lines
Have following listener for keyboard ArrowDown event(it's key code is 40 ): window.onload =
have anyone can tell me what syntax error on this actionscript (actionscript3.0)? var rotY:
I have a ribbon window with a number of buttons wich is using a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.