J'apprends/pratique des solutions de base de cadre MVVM en C#Novice MVVM en C# en essayant de fermer l'application avec Esc (manipulation des commandes clés)
J'ai un petit programme qui joue avec un ComboBox, si l'utilisateur sélectionner quelque chose à partir de la boîte, il est affiché dans un MsgBox. Maintenant, je veux qu'il se ferme sur la touche Echap. J'ai trouvé beaucoup de questions à ce sujet ici résolus comme ceux-ci:
Keyboard events in a WPF MVVM application? Press Escape key to call method
Mais je suis incapable de mettre en œuvre l'un de ces ... Je ne semble même être en mesure de mettre KeyPreview True (Je suis d'accord pour écrire dans le formulaire maintenant, mais la chose amusante est, je ne peux pas le faire fonctionner.)
Mes problèmes sont, je n'ai pas utilisé C# pendant un certain temps, je ne sais pas quoi utiliser exactement (KeyEventArg KeyEventHandler, dois-je utiliser e.Key, e.keyDown?) Et je ne sais pas où mettre ce code. J'ai lu quelques trucs sur la façon de le faire dans le fichier XAML, ce qui serait le meilleur mais n'a pas pu le faire. En ce moment, voici mon code dans le App.xaml.cs, j'ai essayé de l'implémenter dans divers endroits, mais je demande quand Im codage et je ne sais pas quoi faire/quoi Mi faire exactement, donc ici Im.
Mon code en ce moment:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace WpfComboBoxStrinbgListMVVM
{
public class MainViewModel
{
public MainViewModel()
{
ItemList = new List<string> { "item1", "item2", "item3" };
}
public List<string> ItemList { get; set; }
private string seletedElement;
public string SelectedElement
{
get { return seletedElement; }
set
{
seletedElement = value;
MessageBox.Show(seletedElement);
}
}
private void EscKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
{
MessageBox.Show("Escape key pressed");
// mainWindow.Close();? MainWievModel.Close(); App.Close();
}
}
//private void Form1_KeyDown(object sender, KeyEventArgs e)
//{
// if (e.KeyCode == Keys.Escape)
// {
// MessageBox.Show("Escape key pressed");
// // prevent child controls from handling this event as well
// e.SuppressKeyPress = true;
// }
//}
}
}
Je suis incapable de faire apparaître la touche ESC enfoncée MsgBox, pls demander quoi que ce soit que vous avez besoin si vous voulez me aider :) –
« maintenant, je veux fermer sur clé d'esc "- Qu'est-ce que" it "? –
L'application elle-même, le programme, le tout (j'ai un autre projet où sur Esc la fenêtre de connexion disparaît mais fonctionne toujours dans le gestionnaire de tâches, je voudrais pouvoir le fermer correctement) –