Home > Mobile >  Custom Window with all sides Grip
Custom Window with all sides Grip

Time:08-24

Recently I want to make a custom window with WPF for my program.

Here is the code of the Window:

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test"
        mc:Ignorable="d"
        Title="Test" Height="450" Width="850" Background="Transparent" AllowsTransparency="True" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip" WindowStyle="None">     
</Window>

I want to recreate a titlebar that I set the WindowStyle to None.

Now I need to resize the window with the grip. However, the Grip will not work anymore if I set the WindowStyle to None.

In spite I can set the ResizeMode to CanResizeWithGrip. Whereas, it only works on the bottom right side of the Window.

I want to make the Grip work all sides of the window. How can I achieve it?

CodePudding user response:

You can set the ResizeBorderThickness property of a WindowChrome to make a custom window resizable:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" WindowStyle="None">
    <WindowChrome.WindowChrome>
        <WindowChrome CaptionHeight="0" ResizeBorderThickness="5" />
    </WindowChrome.WindowChrome>
    <Grid Background="Yellow">
        <TextBlock>Resizable window...</TextBlock>
    </Grid>
</Window>
  • Related