Exemplo n.º 1
0
        /// <summary>
        /// Switches to a Page which is to send back a result of type TResult
        /// </summary>
        public async Task <TResult> PromptAsync <TResult>(IResultPage <TResult> page)
        {
            // wrap new page in NavigationPage so it appears like pages launched from ShowAsync
            var wrappedPage = new NavigationPage((Page)page);

            await _navigation.PushModalAsync(wrappedPage, true);

            return(await page.GetResultAsync());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Switches back to Page which called PromptAsync() and sends back the result
        /// </summary>
        public void Return <TResult>(TResult value, IResultPage <TResult> sender)
        {
            if (sender.Awaiter.Task.IsCompleted || sender.Awaiter.Task.IsCanceled || sender.Awaiter.Task.IsFaulted)
            {
                return; // already called Return, perhaps error or user double clicked before visually returned back to previous page
            }
            if (!(sender is Page))
            {
                throw new InvalidOperationException($"Storyboard.Return cannot be called with sender not being a page. Was {sender.GetType().Name}");
            }

            sender.Awaiter.SetResult(value);

            // go back in navigation stack
            _navigation.PopModalAsync();
        }
Exemplo n.º 3
0
 /// <summary>
 /// Uses the IResultPage's Awaiter property to allow us to <code>await</code> from the result.
 /// </summary>
 public static async Task <TResult> GetResultAsync <TResult>(this IResultPage <TResult> page)
 {
     return(await page.Awaiter.Task);
 }
Exemplo n.º 4
0
 public void RegisterCancelATest(IResultPage resultPage)
 {
     resultPage.CancelTest += new CustomEventArgs.EventHandlerDefinitions.CancelTestEventHandler(CancelTest);
 }
Exemplo n.º 5
0
 public void RegisterCancelATest(IResultPage resultPage)
 {
     resultPage.CancelTest += new CustomEventArgs.EventHandlerDefinitions.CancelTestEventHandler(CancelTest);
 }