QA@IT

silverlight5で、モーダルダイアログが閉じても親画面のコントロールが有効にならない

1961 PV

お世話になります。

silverlight5 SDKでビルドした、あるwebクライアントアプリケーションにおいて、
サーバとの通信中に「Please wait」と書かれたモーダルダイアログ(ChildWindowのサブクラスとして定義)
を表示し、通信完了時にそのダイアログを閉じる処理を行っているのですが、
モーダルダイアログを閉じても親画面上の入力コントロールが有効にならないという
現象が発生してしまっております。

コード上では親画面内のコントロールや親画面自体のIsEnabledを変えるような処理は
特に行っておりません。通信開始前にモーダルダイアログをShow()して、
通信が完了したらダイアログのClose()を行っております。

ステップ実行してみましたところ、通信の応答は帰ってきておりClose()処理も
実行されておりますが、Close()された後も親画面のIsEnabledがfalseとなっているようです。

実はこのアプリケーションは元々VisualStudio 2010/silverlight4 SDKで開発されており、
silverlight4でビルドした状態でリリースし正常に稼働してきておりました。
この度ビルド環境をVisualStudio 2013/silverlight5に移行し、動作のテストを行っている際に
この様な現象が発生いたしました。

似たような現象を検索しましたところ、下記のURLに書かれている様な現象の報告がありました。
http://blog.livedoor.jp/aboutflat1014/archives/1527271.html
ただこの現象は、私どもがsilverlight4で開発していたころから存在した問題ですので、
これに対する対策はすでに行われております。
Childwindowに対してはClose()のみを記述し、DialogResultへの値の設定は行っておりません。

原因、回避方法等お心あたりのある方いらっしゃいましたら、ご教示いただけると幸いです。
よろしくお願いいたします。

  • 追記です。

    Visual Studio 2013/Silverlight5で新規にプロジェクトを作成し、
    ダミーのwebサービス(5秒待って応答を返すだけのWCFサービス)と
    通信を行い、その通信の間モーダルダイアログを表示して
    通信完了後にclose()を行うだけのシンプルな処理を行ったところ、
    上記報告にあるような現象は発生しませんでした。

    複合的な原因のようです。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。