web-dev-qa-db-fra.com

Universal Apps MessageBox: "Le nom 'MessageBox' n'existe pas dans le contexte actuel"

Je souhaite utiliser MessageBox pour afficher les erreurs de téléchargement dans mon application WP8.1.

J'ai ajouté:

using System.Windows;

mais quand je tape:

MessageBox.Show("");

Je reçois une erreur:

"The name 'MessageBox' does not exist in the current context"

Dans l'Explorateur d'objets, j'ai découvert qu'une telle classe devrait exister. Dans "Projet-> Ajouter une référence ... -> Assemblages-> Framework", il est indiqué que tous les assemblys sont référencés.

Est-ce que quelque chose me manque? Ou y a-t-il un autre moyen d'afficher quelque chose comme une boîte de message?

59
sprrw

Pour les applications universelles, les nouvelles API nécessitent que vous utilisiez await MessageDialog().ShowAsync() (dans Windows.UI.Popups) pour le mettre en conformité avec Win 8.1.

var dialog = new MessageDialog("Your message here");
await dialog.ShowAsync();
123
ZombieSheep

Je voulais juste ajouter à la réponse de ZombieSheep: de plus, la personnalisation est assez simple

        var dialog = new MessageDialog("Are you sure?");
        dialog.Title = "Really?";
        dialog.Commands.Add(new UICommand { Label = "Ok", Id = 0 });
        dialog.Commands.Add(new UICommand { Label = "Cancel", Id = 1 });
        var res = await dialog.ShowAsync();

        if ((int)res.Id == 0)
        { *** }
48
Vitalii Vasylenko

essaye ça:

 using Windows.UI.Popups;

code:

private async void Button_Click(object sender, RoutedEventArgs e)
    {

        MessageDialog msgbox = new MessageDialog("Would you like to greet the world with a \"Hello, world\"?", "My App");

        msgbox.Commands.Clear();
        msgbox.Commands.Add(new UICommand { Label = "Yes", Id = 0 });
        msgbox.Commands.Add(new UICommand { Label = "No", Id = 1});
        msgbox.Commands.Add(new UICommand { Label = "Cancel", Id = 2 });

        var res = await msgbox.ShowAsync(); 

        if ((int)res.Id == 0)
        {
            MessageDialog msgbox2 = new MessageDialog("Hello to you too! :)", "User Response");
            await msgbox2.ShowAsync();
        }

        if ((int)res.Id == 1)
        {
            MessageDialog msgbox2 = new MessageDialog("Oh well, too bad! :(", "User Response");
            await msgbox2.ShowAsync();
        }

        if ((int)res.Id == 2)
        {
            MessageDialog msgbox2 = new MessageDialog("Nevermind then... :|", "User Response");
            await msgbox2.ShowAsync();
        }


    }

Pour déclencher une fonction Lorsque "Oui" ou "Non" est cliqué, vous pouvez également utiliser:

msgbox.Commands.Add(new UICommand("Yes", new UICommandInvokedHandler(this.TriggerThisFunctionForYes)));
msgbox.Commands.Add(new UICommand("No", new UICommandInvokedHandler(this.TriggerThisFunctionForNo)));
30
AKM

Vous pouvez aussi faire un cours comme le suivant. Sous le code, un exemple d'utilisation:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Popups;

namespace someApp.ViewModels
{
    public static class Msgbox
    {
        static public async void Show(string mytext)
        {
            var dialog = new MessageDialog(mytext, "Testmessage");
            await dialog.ShowAsync();
        }
    }

}

L'exemple pour l'utiliser dans une classe

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace someApp.ViewModels
{
    public class MyClass{

        public void SomeMethod(){
            Msgbox.Show("Test");
        }

    } 
}
2
Snamelisch
public sealed partial class MainPage : Page {
    public MainPage() {
        this.InitializeComponent();
    }

    public static class Msgbox {
        static public async void Show(string m) {
            var dialog = new MessageDialog( m);            
            await dialog.ShowAsync();
        }
    }

    private void Button_Click(object sender, RoutedEventArgs e) { 
        Msgbox.Show("This is a test to see if the message box work");
        //Content.ToString();
    }
}
2
Mohammed

Pour les nouvelles applications UWP (à partir de Windows 10), Microsoft recommande d’utiliser plutôt ContentDialog .

Exemple :

private async void MySomeMethod()
{
    ContentDialog dlg = new ContentDialog()
    {
        Title = "My Content Dialog:",
        Content = "Operation completed!",
        CloseButtonText = "Ok"
    };

    await dlg.ShowAsync();
}

Utilisation :

private void MyButton_Click(object sender, RoutedEventArgs e)
{
   MySomeMethod();
}

Remarque : Vous pouvez utiliser différents styles, etc. pour le ContentDialog. Veuillez vous reporter au lien ci-dessus pour connaître les différentes utilisations de ContentDialog.

0
nam