5

アプリケーション(C#WPFアプリケーション)で次の機能を有効にする必要があります。

  1. 通常のサイズは1024*768です。
  2. ユーザーはアプリケーションを最大化できます
  3. ユーザーはアプリケーションを最小化できます
  4. ユーザーはアプリケーションを復元できます(1024 * 768)
  5. ユーザーは、境界線をドラッグしてアプリケーションのサイズを手動で変更することはできません。

ResizeModeこれらの要件をすべて満たすものはありません。何かする方法はありますか?

4

2 に答える 2

6

私は最終的に比較的まともな解決策を見つけました。

アイデアはOnStateChanged、ウィンドウのイベントをオーバーライドし、最小/最大の制約をキャンセルして更新することです。

ウィンドウが最大化されていない場合は、最小/最大の制約を元に戻すだけです

    protected override void OnStateChanged(EventArgs e)
    {
        if (WindowState == WindowState.Maximized)
        {
            MinWidth = 0;
            MinHeight = 0;
            MaxWidth = int.MaxValue;
            MaxHeight = int.MaxValue;

            if (!m_isDuringMaximizing)
            {
                m_isDuringMaximizing = true;
                WindowState = WindowState.Normal;
                WindowState = WindowState.Maximized;
                m_isDuringMaximizing = false;
            }
        }
        else if (!m_isDuringMaximizing)
        {
            MinWidth = 1024;
            MinHeight = 768;
            MaxWidth = 1024;
            MaxHeight = 768;
        }

        base.OnStateChanged(e);
    }
于 2010-02-07T08:59:11.090 に答える
0

Window.SizeChanged イベントをリッスンし、ハンドラー内で幅と高さを手動で 1027 と 768 に戻すことができます。ユーザーはウィンドウの端をドラッグしてサイズを変更できますが、ウィンドウは設定されたサイズに戻ります。これの欠点は、ユーザーがサイズ変更を試みるたびにウィンドウが「発作」を起こすことです。最小化と最大化は通常どおり機能します。

于 2010-02-02T12:21:16.547 に答える