デスクトップの領域を取得する

WindowsFormsでは、GetWorkingArea() というメソッドがあり、それでデスクトップの領域を取得していましたが WPF にはそのメソッドがありません。その代わりに、SystemParameters クラスにデスクトップの領域を示すメンバがあります。

下記のコードを参考にしてください。ついでに WindowsForms では SetBounds() というメソッドでウインドウの位置とサイズをイッキに設定することができましたが、これまた WPF にはありません。なので、いちいち Left, Top, Width, Height のプロパティを設定するしかありません。

using System.Windows;

namespace abc
{
	public partial class MainWindow : Window
	{
		public MainWindow()
		{

			InitializeComponent();

			// WindowsForms で GetWorkingArea にあたるメソッドは WPF には無い.
			double wrk_area_x = SystemParameters.WorkArea.Left;
			double wrk_area_y = SystemParameters.WorkArea.Top;
			double wrk_area_w = SystemParameters.WorkArea.Width;
			double wrk_area_h = SystemParameters.WorkArea.Height;

			// WindowsForms で SetBounds にあたるメソッドは WPF には無い.
			this.Left = wrk_area_x;
			this.Top  = wrk_area_y;
			this.Width = wrk_area_w;
			this.Height = wrk_area_h;

		}

	}
}

WindowsForms のようにウインドウ設計画面においてウインドウをダブルクリックしたら OnLoad のイベントハンドラを自動的に定義してくれるような簡便さは WPF にはないので、いちいち Load のコードを定義してやらなくてはなりません。その場合は、下記のコードを参考にしてください。

コメントにも書いておりますが、WPF の Load は WindowsForms における OnLoad と OnShow が複合したような動きになっていますので、こちらは一瞬ウインドウがチラッとデフォルトサイズで表示されて、その直後にデスクトップの領域を覆う動きが目視できます。

using System.Windows;

namespace abc
{
	public partial class MainWindow : Window
	{
		public MainWindow()
		{

			InitializeComponent();

			// WindowsForms の OnLoadと同じコードを定義する.
			// OnShowにあたるものはない.
			Loaded += MainWindow_Loaded;

		}

		private void MainWindow_Loaded(object sender, RoutedEventArgs e)
		{

			double wrk_area_x = SystemParameters.WorkArea.Left;
			double wrk_area_y = SystemParameters.WorkArea.Top;
			double wrk_area_w = SystemParameters.WorkArea.Width;
			double wrk_area_h = SystemParameters.WorkArea.Height;

			this.Left = wrk_area_x;
			this.Top  = wrk_area_y;
			this.Width = wrk_area_w;
			this.Height = wrk_area_h;

		} 
	}
}