私はSilverlight 5で真のモーダルダイアログを実装するための良い方法を探しています。モーダルダイアログを作成すると主張するすべての例は、コードは、ダイアログが閉じられるまで待機します。Silverlight 5で真のモーダルダイアログを実装する
ダイアログ(ChildWindow)が正しく機能するためには、UIスレッドを実際にブロックすることができないため、これは難しいことです。しかし、SL5にTPLを追加し、Silverlightが過去数年間で見たより高いレベルで、私は誰かがこれを回避する方法を見つけたと考えています。
私が解決しようとしている代表的なシナリオは、ログインダイアログを表示し、続行する前にログインが完了するまで待つ必要があるアクション(ボタンまたはメニュー項目をクリックするなど)です。
私たちの特定のビジネスケース(論理的かどうかにかかわらず)は、アプリケーションがユーザー認証を必要としないことです。ただし、特定の機能には「マネージャー」アクセスが必要です。関数が(ボタンのクリックやメニュー項目の選択などを介して)アクセスされ、現在のユーザーがマネージャでない場合、ログインダイアログが表示されます。ダイアログが閉じると、ユーザーの承認を再度確認します。彼らが許可されていない場合、私たちは素晴らしいメッセージを表示し、アクションを拒否します。権限がある場合は、現在のビューを変更して、ユーザーが要求したとおりに何かを行うことができる新しいものに変更する操作を引き続き実行します。閉鎖さのために
一般的な回避策は、関数をパラメータとして使用する静的(例:ダイアログ)メソッド呼び出しです。通話中に2つのインライン匿名関数を使用してvsが失敗した場合の処理を定義します。 *コードの残りの部分はイベント駆動型なので、非同期モデルではなく非同期モデルで作業してください。* :) –
私の場合は、ChildWindowではないサブビューを持つことでモーダルを再実装しました入力がブロックされた要素に到達しないようにする半不透明なビューがあります。 「モーダル」システムの可視性は、データに束縛されています。 – jv42