Comment émuler une console en WPF?
J'aimerais avoir quelques conseils-dans-le-droit-direction ou même des solutions à ce problème et je suis coincé (je suis juste débutant/intermédiaire):
Je suis en train de mettre en œuvre un SSH dans mon application. Le SSH-backend fonctionne très bien, mais je suis coincé à l'interface. Ce WPF-de la Combinaison de me présenter avec une solution adéquate pour émuler une console? Mettre de côté une complète d'émulation de terminal, je serais heureux de simplement readline/writeline en quelque chose qui ressemble à une console 🙂
Ma meilleure approche était encore un 80x50 Grille de caractères uniques résultant de 4000 cellules individuelles et qui ressemble à un total overkill.
Une autre idée était de faire une console-Appl. lié à un wpf-fenêtre dans un autre projet. Mais...est-ce possible et comment?
Cela aurait pu être utile si elle aurait été utile. S'il vous plaît, de bien vouloir préciser.
Vous pourriez le style d'une liste et d'utiliser des zones de texte que les éléments et ont tha dernière zone de texte modifiable à taper une commande, saisissez la poignée du texte entré dans la zone de texte en lecture seule et ajouter une nouvelle zone de texte vers le bas
Mon point était.. si vous voulez une console.. pourquoi ne pas simplement écrire une application de console?
Si cela aurait été le moyen le plus évident, ce n'est pas ce que j'ai prévu, dans le cas contraire, j'aurais simplement choisi une console 🙂 Peut-être que je n'ai tout simplement pas le faire moi-même très clair. Mon mauvais.
OriginalL'auteur FrankyTheDumb | 2013-02-19
Vous devez vous connecter pour publier un commentaire.
Étant donné que vous souhaitez émuler une console, je le ferais comme ça. Notez que vous devrez gérer les commandes et de la sortie des résultats vous-même.
page.xaml
page.xaml.cs
Je ne suis pas en mesure d'obtenir cette réponse de travailler en ms visual studio et vous serions reconnaissants de construire/instructions de projets ou en cas de besoin, les corrections nécessaires.
Pourriez-vous élaborer sur 'pas en mesure d'obtenir cette réponse au travail" - ce qui est l'erreur, ou de ce qui ne se passe pas que vous attendez? Sans aucun symptôme du problème, il est difficile de diagnostiquer ce qu'elle pourrait être.
Un projet ou dont l'usage aurait été plus facile sur les non-initiés. Pas de problème pour moi pour l'instant, cependant, et une excellente réponse.
OriginalL'auteur ZombieSheep
Saviez-vous que vous pouvez afficher une fenêtre de Console à partir de votre application à l'aide de AllocConsole?
Ou vous pouvez utiliser ceci:
Pour une meilleure apparence, remplacer le TextBlock avec une zone de liste et le style de l'ItemTemplate en conséquence.
Alors, je vous suggère de prendre un coup d'oeil à ceci: codeproject.com/Articles/247280/WPF-Command-Prompt
Qui a cloué trop, merci pour le lien!
OriginalL'auteur animaonline
Je n'ai pas fait moi-même, mais il est l'un de mes "je le ferai si j'ai le temps"-projets.
Donc je suis toujours à la recherche d'une implémentation existante 😛
De toute façon quelques réflexions:
La applroach utiliser les Visuels (c'est à dire Ellipses, Textblocks) n'est probablement pas une bonne Idée.
Il suffit de penser de ce qui doit se produire si vous voulez 200x100 caractères. Peut-être même un backbuffer. Tient le tout en mémoire + dessin....il va incroyablement lent.
Donc le mieux (ou même de droite) approche consiste à "dessiner vous-même". Depuis WPF est backbuffered et vous ne souhaitez pas afficher l'arbitraire d'un bitmap les plus likly approche serait de créer un nouveau contrôle utilisateur et remplacer ce soit de la Peinture-de la Méthode.
Vous ma préfèrent tirer de Contrôle, mais UserControl peuvent avoir du Contenu, de sorte que vous pouvez montrer quelque chose comme un indicateur de connexion icône de l'intérieur.
Architecture-sage je te suggère de créer une dépendance au bien Tampon (
ConsoleBuffer
) qui détient le tampon de la console-modèle. Un autre DP tenir le haut à gauche de positon Emplacement (long
). Il détermine le début de l'affichage (même si vous avez un coup d'oeil derrière). Le modèle de console, je voudrais faire une classe qui contient unechar[]
et unColor[]
(unidimensionnel). L'utilisation de coupure de ligne et\n
de caractères pour faire des lignes (parce que c'est le caractère d'une console). Alors si vous redimensionnez le contrôle de ré-écoulement sans le tampon besoin d'être ré-attribués.Vous pouvez travailler avec **ConsoleBuffer**s de différentes tailles (pour un nombre différent de regarder derrière caractères).
ConsoleBuffer.Write(string s)
est votre méthode pour faire des trucs.Peut-être il est conseillé de tenir des tableaux de tableaux
char[][]
pour représenter les lignes.... mais c'est à découvrir lors de la programmation.OriginalL'auteur Robetto