Border-less Windows 즉, 윈도우 창에 테두리가 없는 윈도우를 말한다. WPF 에서 스플래쉬 윈도우나, 일반적이지 않은 특별한 윈도우를 만들기 위해서는 border 가 없는 윈도우에 작업을 한다. 비단 WPF 뿐만이 아니라 MFC, WinForm 에서도 이런 방식을 사용하고 있다. 



Figure 1 : border 를 갖지 않는 윈도우


Setting Window Attributes

Border가 없는 윈도우를 만들기 위해서는 window의 다음 어트리뷰트를 설정해주어야 한다.

● WindowStyle="None"
● ShowInTaskBar="False"
● AllowsTransparency="True"
● Background="Transparent"

WindowStyle, ShowInTaskBar 어트리뷰트 WinForm 에서도 사용되어지니 눈에 익숙하다. 실제로 border를 없애는 것은 WindowStyle 어트리뷰트이며 ShowInTaskBar는 선택적인 옵션이다. AllowTransparency 과 Background 어트리뷰트가 중요하다. 이 두 어트리뷰트는 함께 설정해야 하며, Background를 Transparent로 설정하기 위해선 AllowTransparency를 True로 설정해야 한다. 이 두 어트리뷰트를 설정하지 않으면 border가 계속 보이게 된다.



Figure 2 : WindowStyle="None", AllowTransparency 와 Background 는 설정하지 않은 경우


예제 XAML 코드

<Window x:Class="NoBorderDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" 
        Height="350" Width="525"
        WindowStyle="None" AllowsTransparency="True" Background="Transparent"
        ResizeMode="NoResize"
        ShowInTaskbar="False"
        WindowStartupLocation="CenterScreen">
    <Border BorderBrush="Gray"
            BorderThickness="0, 0, 2, 2"
            CornerRadius="10"
            Background="Beige">
        <Border BorderBrush="Transparent"
                BorderThickness="5"
                CornerRadius="10">
            <Border BorderBrush="Black"
                    BorderThickness="1.5"
                    CornerRadius="10">
                <StackPanel Background="Yellow"
                            VerticalAlignment="Bottom"
                            HorizontalAlignment="Center"
                            Margin="10">
                    <Button Click="Button_Click">
                        Close Me
                    </Button>                    
                </StackPanel>
            </Border>        
        </Border>
    </Border>
</Window>


Posted by six605
,