Ожидание ответа с помощью Callisto CustomDialog

#c# #xaml #windows-8 #customdialog #callisto

#c# #xaml #windows-8 #customdialog #callisto

Вопрос:

У меня есть приложение для магазина Windows, которое использует Callisto toolkit и элемент управления CustomDialog

Внутри FOREACH я показываю CustomDialog. Проблема в том, что мне нужно дождаться ответа пользователя, я имею в виду, ожидать события нажатия кнопки (кнопка 1 или кнопка 2)

Это просто с MessageDialog, вам нужно только дождаться диалога.ShowAsync();

 <callisto:CustomDialog x:FieldModifier="public" x:Name="JustATest" 
    Background="White" BackButtonVisibility="Collapsed" Title="Some title">
    <StackPanel Width="500">
        <TextBlock Margin="0,0,0,8" FontSize="14.6667" FontWeight="SemiLight" TextWrapping="Wrap">
            <Run x:Name="txt1" Text="Some random sample text.."/>
        </TextBlock>
        <CheckBox Margin="0,20,0,8" Content="Some checkbox" />

        <StackPanel Margin="0,20,0,0" HorizontalAlignment="Right" Orientation="Horizontal">
            <Button Content="button 1" Width="80" Margin="0,0,20,0" />
            <Button Content="button 2" Width="80" />
        </StackPanel>
    </StackPanel>
</callisto:CustomDialog>
  

Комментарии:

1. Можете ли вы опубликовать свой код для каждой части?

Ответ №1:

1) WinRT XAML Toolkit — библиотека AsyncUI

2) using WinRTXamlToolkit.AwaitableUI;

3) public async Task<bool> ShowDialogAsync(....) {
.......
this.Dialog.IsOpen = true;
//add buttons to awaitable
var buttons = new List<ButtonBase>();
buttons.Add(btnOK);
buttons.Add(btnCancel);
//wait for result
var clickedButton = await buttons.WaitForClickAsync();
//close popup
this.Dialog.IsOpen = false;
.......
//return result
return clickedButton.Name.Contains("btnOK");
}

4) var result = await ShowDialogAsync();