WPFには、ウィンドウの最大化を無効にするネイティブな方法がありません ( WinFormsとは異なります)。したがって、次の重要な点を考慮してください。
1. 最大化ボタンを隠す
WinAPIを使用するのも 1 つの方法ですが、最大化ボタンを非表示にするためだけです。以下を使用します。
[DllImport("user32.dll")]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
private const int GWL_STYLE = -16;
private const int WS_MAXIMIZEBOX = 0x10000;
private void Window_SourceInitialized(object sender, EventArgs e)
{
var hwnd = new WindowInteropHelper((Window)sender).Handle;
var value = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, (int)(value & ~WS_MAXIMIZEBOX));
}
2. 最大化の手動処理
上記のコードでも最大化が可能です (たとえば、ウィンドウのタイトルをダブルクリックします)。
WPFでは、タイトル バーの動作を制御できません。ダブルクリックの動作を変更したい場合は、タイトル バーを削除して独自に作成する必要があります。それがMahApps.Metroでどのように行われたかを見てみましょう-サンプルへのリンク。その後、ダブルクリックイベントを処理します。