web-dev-qa-db-ja.com

:wpf c#を使用してタスクバーをカバーせずにフルスクリーンモードを作成する方法

WPFアプリケーションでWindowsタスクバーを変更する必要があります。そのために、WindowStyle="None"を設定しました。これは、Windowsタスクバーを無効にし、アプリケーションを復元、最小化、および閉じるためのボタンを備えたカスタムタスクバーを作成することを意味します。今私の問題は、アプリケーションが最大化モードにある場合、ウィンドウにスタートメニューが表示されないことです。

ここで同様の質問を見つけましたが、このコードを試したところ、コンパイルされませんでした。 フルスクリーンモードですが、タスクバーはカバーしません

独自のタスクバーを作成し、最大化したときにWindowsのスタートメニューを表示するにはどうすればよいですか?それを設定できるxamlのプロパティウィンドウはありますか?

11
Evgeni Velikov

あなたはこれを試すことができます:

MaxHeight = SystemParameters.MaximizedPrimaryScreenHeight;
MaxWidth = SystemParameters.MaximizedPrimaryScreenWidth;
21
Pikoh

役立つ可能性のある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;
4
M. Schena

提案された解決策は私のために働いたしかしユーザー設定に関係なく正しいサイズを持つためにウィンドウのピクセルから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;
}
1
Nicolas
WindowStyle="None" 
AllowsTransparency="True"  

そして

this.Top = 0;
this.Left = 0;
this.Width = SystemParameters.WorkArea.Width;
this.Height = SystemParameters.WorkArea.Height;
1
Hafizul Amri

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からウィンドウ位置(左)を引くときに、最初に左パラメーターを配置します。それよりも、画面下部の作業領域からウィンドウの高さを差し引くことによって、最も低いポイントを取得するために同じことを行います。画面の作業領域にはタスクバーが含まれていません!

楽しい!

アヴリ

0
Dr. Avri