Window枠の消し方
方法は以下の2通りある。
- WindowChromeでデフォルトの枠を消す
- WindowStyleプロパティをNoneにする
WindowChromeを実装する
WindowChromeクラスの詳細は,MicroSoft Docsに記述されています。
WindowChrome クラス (System.Windows.Shell) | Microsoft Docs
簡単に言うと,WindowChromeはWindowの標準的な機能を維持しながらウィンドウをカスタマイズすることができます。
実際のコードがこちら。
<Window x:Class="WindowDropShadow.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:WindowDropShadow" mc:Ignorable="d" Title="Window DropShadowEffect" Height="150" Width="300"> <WindowChrome.WindowChrome> <WindowChrome CaptionHeight="8" ResizeBorderThickness="3"/> </WindowChrome.WindowChrome> <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{StaticResource BackgroundBrush}"> <TextBlock Text="Test App" Foreground="{StaticResource TextForegroundBrush}"/> </Grid> </Window>
CaptionHeightプロパティでウィンドウ上部の領域の高さを指定し,ResizeBorderThicknessプロパティでウィンドウのサイズ変更用Borderの線の太さを設定しています。0だとサイズ変更ができなくなります。
注意
- SizeToContentをTrueにすると,描画前にサイズを決定してしまう(?)ので黒い領域が出現する。LoadedイベントでSizeToContentをTrueにする処理にすれば描画後にサイズ調整されていい感じ。
- 最大化の具合が悪いので手動で調整が必要
詳しいことはこちらのサイト様を参考にしています。
iyemon018.hatenablog.com
WindowStyleプロパティをNoneに設定する
この方法では,サイズ変更やウィンドウの移動処理などの機能を全て自前実装しなければならないのでかなり苦労しそう。
一応コードと画像を載せておく。
<Window x:Class="WindowStyleNone.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:WindowStyleNone" mc:Ignorable="d" Title="Window Style None" Height="150" Width="300" WindowStyle="None" AllowsTransparency="True" Background="Transparent" WindowStartupLocation="CenterScreen"> <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="White"> <TextBlock Text="WindowStyle=None TestApp"/> </Grid> </Window>
ひとまずここまで。
mogmo