IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Besoin d'explication pour les contrôles utilisateur


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 42
    Par défaut Besoin d'explication pour les contrôles utilisateur
    bonjour,

    Je trouve le concept du contrôle utilisateur vraiment génial, et j'ai décidé de créer un clavier virtuel. L'ennui c'est que je n'ai aucune idée de comment récupérer la valeur de la touche pressée qui devrait renvoyer un string.

    Imaginons que j'ai un clavier a 2 touches:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <UserControl x:Class="WpfApplication1.Clavier"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="145" d:DesignWidth="275">
        <Grid Height="143" Width="271">
            <Button Content="a" Height="23" HorizontalAlignment="Left" Margin="73,53,0,0" Name="b_a" VerticalAlignment="Top" Width="75" Click="b_a_Click" />
            <Button Content="b" Height="23" HorizontalAlignment="Left" Margin="154,53,0,0" Name="b_b" VerticalAlignment="Top" Width="75" Click="b_b_Click" />
        </Grid>
    </UserControl>

    Quand mon clavier était dans mon programme je devais juste faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <code type="csharp">
    private void b_a_Click(object sender, RoutedEventArgs e)
            {
                 gereMaTouche("a");
            }
     
    private void b_b_Click(object sender, RoutedEventArgs e)
            {
                 gereMaTouche("b");
            }
    </code>
    "gereMaTouche" étant une méthode privée de ma fenêtre principale, qui va écrire dans plusieurs textbox du programme

    Je ne vois pas comment faire pour faire la même chose via les touches de l'User Control

    Quelqu'un pourrait m'éclairer ?

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Tu peux créer un event "KeyPressed" dans ton UC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class KeyPressedEventArgs : EventArgs
    {
    	public string Key
    	{
    		get;
    		set;
    	}
    }
    ...
    public event EventHandler<KeyPressedEventArgs> KeyPressed;
    La propriété "Key" pourrait être du type System.Windows.Input.Key.

    Puis ton application s'abonnera à l'événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clavier.KeyPressed += OnKeyPressed;
    ...
    private void OnKeyPressed(object sender, KeyPressedEventArgs args)
    {
    	string key = args.Key;
    	...
    }
    Ainsi tu découples ton UC du reste de ton application.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut
    Salut, ton logiciel utilise ou structure MVVM ou bien monolitique ???

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    sinon tu rajoute une DP pour pouvoir la connecter en binding
    ceci etant un clavier virtuel tu peux le faire ausi avec un custom control
    pour pouvoir permettre de redefinir le style

    je te conseil de faire les deux version tu verra l'interet de la chose

Discussions similaires

  1. Besoin d'explication pour l'impression
    Par mygwel dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 25/05/2006, 10h49
  2. [RegEx] Quels caractères interdire pour les logins utilisateurs ?
    Par Death83 dans le forum Langage
    Réponses: 24
    Dernier message: 15/05/2006, 21h45
  3. Besoin d'explications sur les charset
    Par EGPMS dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 03/02/2006, 15h38
  4. plus de couleur pour les contrôles shape
    Par matech dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/01/2006, 13h29
  5. [FLASH MX2004] Explication pour les comboBox
    Par Sorento dans le forum Flash
    Réponses: 7
    Dernier message: 18/06/2005, 23h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo