【KBJ10074】複数のxamWebDialogWindowを表示する際の注意点

0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター

トップ 10 投稿者 
男性
投稿 45
IG Employee
[IG] 山田 達也 投稿済み: 2010/5/27 10:36
【概要】
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();
           
        }
 
 
ページ 1 / 1 (1 項目) | RSS
Infragistics Japan
インフラジスティックス ジャパン