17

運が悪いのでデバッグしようとしている奇妙なエラーがあります。

一部のコンテンツを表示する hwndhost をサブクラス化しました。そのクラスには、フルスクリーンに設定する次の関数があります。

    private void SetFullScreen(bool enable)
    {
        if (enable)
        {
            fs = new Window();
            fs.ResizeMode = ResizeMode.NoResize;
            fs.WindowState = System.Windows.WindowState.Maximized;
            fs.WindowStyle = System.Windows.WindowStyle.None;
            fs.Topmost = true;
            fs.PreviewKeyDown += delegate(object sender, KeyEventArgs e) { 
                if (e.Key==Key.Escape)
                    FullScreen = false;
            };
            fs.Show();
        }
        else
        {
            fs.Close();
            fs = null;
        }
    }

これはプロトタイプの WPF アプリでは問題なく動作しましたが、メイン アプリでこのコードを使用すると、ウィンドウを閉じるとき (エスケープ キー) とfs.close()呼び出し時に次のエラーが発生します。

'{DependencyProperty.UnsetValue}' is not a valid value for property 'FocusVisualStyle'.

奇妙なことに、ウィンドウが閉じてから約 1500ms 後に発生します。FocusVisualStylefsを null に設定しようとしましたが、別のように見えます。直観的には、このプロパティを持たないアプリ内の別の要素に焦点を合わせようとしているのですが、実際にはわかりません!

ありがとう!

編集。問題は、フルスクリーン ボタンの FocusVisualStyle のカスタム設定でした。{x:Null} に設定すると、問題はなくなりました。

4

4 に答える 4

13

上記のウィンドウを閉じたときにフォーカスを取得するコントロールには、FocusVisualStyle を含まないカスタム スタイルが設定されていると思います。

このウィンドウを閉じると何が起こるか (または起こるべきか) を説明する必要があります。

フォーカスを取得するコントロールの種類は何ですか?

于 2011-02-23T10:11:38.230 に答える