2017-09-04 31 views
0

ContentDialogをキューに入れ、別のキューを閉じた後に表示することは可能ですか? は私がContentDialogキューイングContentDialog in uwp

var popups = VisualTreeHelper.GetOpenPopups(Window.Current); 
     int i = 0; 
     foreach (var item in popups) 
     { 
      if (item.Child is ContentDialog) 
       i++; 
     } 
     if (i == 0) 
     { 
      //show ContentDialog 
     } 
     else 
      // add to my listOfContentDialog 

を見つけるために、これを使用しかし、私はそれが操作を誤って開始されたことを例外をスローし、一度に多くのContentDialog年代を開こうとした場合。ジェイデン区によると

UPDATE - MSFT私の作業コード

private List<string> testowa_lista = new List<string>(); 

    private async void Komunikat_siatki(string v) 
    { 
     if(mozeWyskoczyc) 
     { 
      mozeWyskoczyc = false; 
      //my internal code to generate ContentDialog using v string 
      testowa_lista.Remove(v); 
      mozeWyskoczyc = true; 
      if (testowa_lista.Count > 0) 
      { 
       var i = testowa_lista.First(); 
       Komunikat_siatki(i); 
      }      
     } 
     else 
     { 
      testowa_lista.Add(v); 
     } 
    } 
+0

キューに入れるContentDialogの数は分かりますか?私はそれに応じて解決策を提供しようとしています。 – Pratyay

+0

ContentDialogsのネーバーは動的です(最大5) – kdn29

+0

もう1つのアプローチがhttps://stackoverflow.com/questions/33018346/only-a-single-contentdialog- 47986634#47986634 –

答えて

0

つだけContentDialogを一度に表示することができます。

ContentDialogが表示されている場合、ContentDialogを表示できません。 のLostFocusイベントにShowAsyncメソッドを追加して[タップ]ボタンを使用すると、同時に2つのContentDialogが表示されます。

ContentDialogを表示できるかどうかを判断するために、boolフィールドを追加して状態にすることができます。例えば

private async void Text_LostFocus(object sender, RoutedEventArgs e) 
{ 
    if (dialogCanShow) 
    { 
     dialogCanShow = false; 
     var textBox= sender as TextBox; 
     var contentDialog = new ContentDialog(); 
     contentDialog.Title = textBox.Name; 
     contentDialog.CloseButtonText = "Close"; 
     await contentDialog.ShowAsync(); 
     dialogCanShow = true; 
    } 
} 

我々はContentDialogを閉じると、カーソルは現在のTextBoxに表示されます。あなたが複数のコンテンツダイアログをキューイングする必要があるので

+0

部分的に私が望むのは...それは複数のContentDialogを開くことはできませんが、キューを作成することはできません。 – kdn29

+0

@ kdn29 https://stackoverflow.com/questions/33018346/only-a-single-contentdialog-can-be-open-at-any-time-error-while-opening-anoth/47986634#47986634をご覧ください。 –

0

あなたの代わりにメッセージダイアログを使用することができます。

await new MessageDialog("First").ShowAsync(); 

await new MessageDialog("Second").ShowAsync(); 
+0

いいえ、必要なものはありません – kdn29

0

あなたは、いくつかのコレクションに保存し、それらを一次々と表示される場合があります。

List<ContentDialog> dialogs = new List<ContentDialog>() 
{ 
    contentDialog1, 
    contentDialog2, 
    contentDialog3 
}; 

foreach (ContentDialog dialog in dialogs) 
{ 
    await dialog.ShowAsync(); 
} 
+0

UWPでは、一度に1つのContentDialogしか開くことができません。コードが例外をスローします。 – kdn29

+0

試しましたか? 1つのダイアログが閉じられると、 'foreach'ループの実行が続行されるので、私のために動作します。 –

+0

申し訳ありませんが、動作していません。一度に1つのContentDialogしか開くことができない例外を投げる – kdn29

0

あなたはこれを試すことがあります。

  int count = 1; //count is used to simply to have dynamic content in the dialogs 
      private async void startCreatingDialog() 
      { 
       var result = await createDialog(count.ToString()).ShowAsync(); 
       if (result == ContentDialogResult.Primary) 
       { 
        //create a new dialog based on user's input 
        count++; 
        startCreatingDialog(); 
       } 

      } 
      private ContentDialog createDialog(string content) 
      { 
       ContentDialog contentDialog = new ContentDialog() 
       {     
        Content = content, 
        //clicking on the primarybutton will create the next ContentDialog 
        PrimaryButtonText = "Show another dialog",       
        SecondaryButtonText = "Cancel" 
       }; 

       return contentDialog; 

      } 

あなたはstartCreatingDialog()、残りを呼び出す必要があるダイアログキューの表示を開始するには、ユーザーの好みに応じて処理されます。..

これが役に立てば幸いです。

関連する問題