ホーム
ブログ
フォーラムとナレッジベース
フォーラム
»
NetAdvantage Silverlight
»
レイアウト
»
【KBJ10074】複数のxamWebDialogWindowを表示する際の注意点
【KBJ10074】複数のxamWebDialogWindowを表示する際の注意点
0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター
投稿
45
返信
[IG] 山田 達也
投稿済み: 2010/5/27 10:36
0 ユーザーが評価
【概要】
xamWebDialogWindowを使うことでモーダル・モードレスダイアログを表示することができますが、モーダルダイアログの中でさらにモーダルダイアログを開く必要がある場合は以下の点に留意する必要があります。
【該当するコンポーネント】
【該当するバージョン】
全てのバージョン
【記事の種類】
Workaround
【詳細】
モーダル (IsModal = true) として開いた xamWebDialogWindow の中からさらにモーダルの xamWebDialogWindow を開く必要がある場合、特に設定がない場合は二つ目のダイアログが操作できない状態になることがあります。
その場合、以下の2通りの方法を試してください。
(方法1:ダイアログを入れ子で表示する場合)
XamWebDialogWindow.RestrictInContainer = true に設定
このプロパティ設定により、新しく追加されるXamWebDialogWindowが親コンテナーの中で表示されることが保証されるため、正しく子ダイアログが操作できるようになります。
(方法2:最初に表示したダイアログの外側に2番目のダイアログを表示する場合)
2番目のXamWebDialogWindowを作成する際に、画面の最上位コンテナーに対してXamWebDialogWindowオブジェクトを追加する処理を記述します。たとえば最上位のオブジェクトが Grid (Name = "LayoutRoot")であるならば、以下のようなコードビハインドによって追加対象のコンテナーを指定します。
C#
private void Button_Click(object sender, RoutedEventArgs e)
{
XamWebDialogWindow dw = new XamWebDialogWindow();
dw.Content = new MainPage();
dw.IsModal = true;
dw.WindowState = Infragistics.Silverlight.WindowState.Normal;
dw.StartupPosition = Infragistics.Silverlight.StartupPosition.Center;
dw.Width = 300;
dw.Height = 200;
MainPage mp = Application.Current.RootVisual as MainPage;
Grid grid = mp.FindName("LayoutRoot") as Grid;
grid.Children.Add(dw);
// Dialog を閉じたときにコンテナーから除去します
dw.WindowStateChanged += new EventHandler<Infragistics.Silverlight.WindowStateChangedEventArgs>((s1, e1) =>
{
if (dw.WindowState == Infragistics.Silverlight.WindowState.Hidden)
{
grid.Children.Remove(dw);
}
});
dw.Show();
}
以下に保存:
KB
,
XamWebDialogWindow
,
Silverlight
前へ
|
次へ
ページ 1 / 1 (1 項目) |
RSS
インフラジスティックス ジャパン