Neutral Scent

App developments & Gadgets

透けてドラッグできる枠なしウインドウ


WPFで小洒落たウインドウっぽくない非矩形で半透明なウインドウを作成したい場合はこんな感じです。

  1. Windowクラスのプロパティ設定
    • WindowStyle="None"
    • Background="Transparent"
    • AllowsTransparency="true"
  2. マウス押下の処理
    • MouseLeftButtonDownハンドラの追加
    • DragMove()メソッドの呼び出し

こんだけです、まぁ簡単なもんで。

< Window x:Class="FramelessWindow.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="FramelessWindow" Height="300" Width="300" WindowStyle="None" Background="Transparent">
    
      
    

public partial class Window1 : System.Windows.Window
{

	public Window1()
	{
		InitializeComponent();

		this.AllowsTransparency = true;
		this.MouseLeftButtonDown += new MouseButtonEventHandler(Window1_MouseLeftButtonDown);
	}

	void Window1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
	{
		this.DragMove();
	}

}

AllowsTransparencyをコード側で設定しているのは、Orcas(RC1)のデザイナが対応していないらしく、プレビューが出なくなるため。XAML側に書いても動きます。
イベントハンドラは、いちいち書くのがめんどいので、ついコンストラクタで宣言しちゃいますね...。