4

Visual Studio 2010でWPFデザイン時の奇妙な動作に遭遇しました。ポップアップクラスのインスタンスが作成され、Visual Studioのコードタブを別のファイルに切り替えた後も、ポップアップは画面に表示されたままになります。

ここに画像の説明を入力してください

これを再現できるコードがありますが、ここに貼り付ける必要があるかどうかはわかりません(それほど短くはありません)。そのため、リンクをここに示します。

4

2 に答える 2

2

単なる人間の理解を超えた未知の理由により、MicrosoftはこれがPopupWPFのクラスのデフォルトの動作であると判断しました。「非表示」ロジックを自分で実装する必要があります。Window.LocationChangedポップアップを含むウィンドウの、Window.ActivatedおよびWindow.Deactivatedイベントを処理し、自分で閉じることをお勧めします。

編集:自分自身を明確にするために、処理する必要のあるウィンドウイベントは、ポップアップのPlacementTarget要素を含むウィンドウのイベントです。通常、ポップアップを作成するときは、アプリケーションのウィンドウに含まれる要素を基準にしてポップアップを設定します(ツールチップの動作と同様)。これがあなたの場合であれば、私の解決策は正しいですが、PlacementTargetについてこの点について言及するのを忘れました。

于 2012-11-12T18:24:44.247 に答える
1

コードビハインドで; このブール値を簡単に確認できます:

DesignerProperties.GetIsInDesignMode(this);

「this」は、ポップアップを含むオブジェクトを表します。たとえば、ウィンドウ。

本当の場合、次のように言えます。

myPopUp.IsOpen = false;

ストア アプリ/WinRT の場合:

Windows.ApplicationModel.DesignMode.DesignModeEnabled
于 2016-10-13T12:49:58.740 に答える