WPFアプリケーションでWindowsタスクバーを変更する必要があります。そのために、WindowStyle="None"
を設定しました。これは、Windowsタスクバーを無効にし、アプリケーションを復元、最小化、および閉じるためのボタンを備えたカスタムタスクバーを作成することを意味します。今私の問題は、アプリケーションが最大化モードにある場合、ウィンドウにスタートメニューが表示されないことです。
ここで同様の質問を見つけましたが、このコードを試したところ、コンパイルされませんでした。 フルスクリーンモードですが、タスクバーはカバーしません
独自のタスクバーを作成し、最大化したときにWindowsのスタートメニューを表示するにはどうすればよいですか?それを設定できるxamlのプロパティウィンドウはありますか?
あなたはこれを試すことができます:
MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
役立つ可能性のあるCodeProjectの解決策を見つけました: http://www.codeproject.com/Articles/107994/Taskbar-with-Window-Maximized-and-WindowState-to-N
WindowStyle="None"
WindowState="Maximized"
ResizeMode="NoResize"
そして
this.Width = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width;
this.Height = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
this.Left = 0;
this.Top = 0;
this.WindowState = WindowState.Normal;
提案された解決策は私のために働いたしかしユーザー設定に関係なく正しいサイズを持つためにウィンドウのピクセルからdpiへのセッター値を修正する必要があります:
xamlで:
WindowStyle="None" WindowState="Maximized" ResizeMode="NoResize"
コード内:
public MainWindow()
{
InitializeComponent();
var graphics = System.Drawing.Graphics.FromHwnd(IntPtr.Zero);
var pixelWidth = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width ;
var pixelHeight = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;
var pixelToDPI = 96.0 / graphics.DpiX ;
this.Width = pixelWidth * pixelToDPI;
this.Height = pixelHeight * pixelToDPI;
this.Left = 0;
this.Top = 0;
this.WindowState = WindowState.Normal;
}
WindowStyle="None"
AllowsTransparency="True"
そして
this.Top = 0;
this.Left = 0;
this.Width = SystemParameters.WorkArea.Width;
this.Height = SystemParameters.WorkArea.Height;
WPFのソリューション
WPFプロジェクトのmainWindowを、taskBarを覆わずに画面の右下に配置するとします。これを書きます:
public MainWindow()
{
InitializeComponent();
// set position of window on screen
this.Left = SystemParameters.PrimaryScreenWidth - this.Width;
this.Top = SystemParameters.WorkArea.Bottom - this.Height;
}
this =オブジェクト(MainWindow)PrimarySrceenWidthからウィンドウ位置(左)を引くときに、最初に左パラメーターを配置します。それよりも、画面下部の作業領域からウィンドウの高さを差し引くことによって、最も低いポイントを取得するために同じことを行います。画面の作業領域にはタスクバーが含まれていません!
楽しい!
アヴリ