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 :

[C#/WPF] MVVM envoie d'information au ViewModel


Sujet :

Windows Presentation Foundation

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

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

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Points : 129
    Points
    129
    Par défaut [C#/WPF] MVVM envoie d'information au ViewModel
    Bonjour,

    Comme je le pensai j'ai encore des ty problème sur mon logiciel

    Quelqu'un saurai-t-il utiliser parfaitement la propriété CommandParameter en WPF car ce que je veux c'est envoyer en paramètre ma fenêtre entière pour y récuperer les propriété de tel ou tel élément de celle-ci et effectuer des test de ce genre:
    MessageBox.Show(maFenêtre.monElement.Valeur)
    Si il existe une meilleur façon de faire je suis preneur aussi

    mes codes sont les suivant:
    [XAML]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button Command="{Binding CommandOK}" Content="OK" Height="23" HorizontalAlignment="Right" Margin="0,284,12,0" VerticalAlignment="Top" Width="75" />
    [C#] de mon ViewModel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    private RelayCommand m_CommandOK;
    
    public ICommand CommandOK
            {
                get
                {
                    if (m_CommandOK == null)
                    {
                        m_CommandOK = new RelayCommand(param => CanSave(), param => Save());
                    }
    
                    return m_CommandOK;
                }
            }
    
    public static bool CanSave()
            {
                return true;
            }
    
    public static void Save()
            {
                MessageBox.Show(valeur d'un des éléments de ma fenêtre);
            }
    Merci d'avance de m'aider.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu ne peux pas passer ta fenêtre entière au CommandParameter.

    Par contre, ce que tu peux faire (pas propre mais fonctionne): sur le loaded de ta fenêtre, tu déclenches une commande (avec EventToCommand) qui va récupérer, via les argument de la commande, l'originalsource à savoir ta fenêtre....

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

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

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Points : 129
    Points
    129
    Par défaut
    J'ai modifier l'intitulé du ticket anciennement [C#/WPF] MVVM Utilisation avancé de CommandParameter

    Pour résumé j'aimerai lors d'une commande récupérer les informations de certain élément de ma fenêtre (attention je travail sous structure MVVM)

    J'ai eu un idée mais qui ne marche pas :'(
    C'est a mon goût plus propre mais long a coder par contre je ne trouve pas ce qui pourrai clocher, le UcValue="{Binding myValueID}" ou bien mon code ViewModel ???

    J'ai créer un simple userControl dans lequel UcValue est la propriété de ma textBox de celui-ci
    [XAML] 2 element de mon userControl (myFieldTextBox1 est le nom du UserControl)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <Label Content="{Binding ElementName=myFieldTextBox1, Path=UcContent}" />
    <TextBox Text="{Binding ElementName=myFieldTextBox1, Path=UcValue}" />
    [C#] code pour les propriété créer a mon userControl (vous l'aurez compris UcValue correspond a ma textbox et UcContent au label)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
            /// <summary>
            /// The dependency property
            /// </summary>
            public static DependencyProperty LabelProperty = DependencyProperty.Register(
                "UcContent", typeof(string), typeof(FieldTextBox1));
            public static DependencyProperty TextBoxProperty = DependencyProperty.Register(
                "UcValue", typeof(string), typeof(FieldTextBox1));
            /// <summary>
            /// Gets or sets the nsource of the image to render.
            /// </summary>
            public string UcContent
            {
                get { return (string)GetValue(LabelProperty); }
                set { SetValue(LabelProperty, value); }
            }
            public string UcValue
            {
                get { return (string)GetValue(TextBoxProperty); }
                set { SetValue(TextBoxProperty, value); }
            }
    Jusque la tout va bien
    [XAML] dans la fenêtre ou est utiliser mon userControl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <myField:FieldTextBox1 UcValue="{Binding myValueID}" UcContent="{DynamicResource myLabelID}" />
    [C#] et enfin le code ViewModel de ma fenêtre ou est utiliser le userControl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
            #region Member Fields
            /// <summary>
            /// The value for Items.
            /// </summary>
            private string _IDValue;
            #endregion
     
            #region Properties
            public string IDValue
            {
                get { return _IDValue; }
                set
                {
                    _IDValue = value;
                    OnPropertyChanged("IDValue");
                }
            }
            #endregion
     
            #region Event Handlers
            public void Save()
            {
                MessageBox.Show(IDValue);
            }
            #endregion
    C'est la dernière idée que j'ai eu en tête donc fausse vu que mon test ne marche pas, du moins pour récupérer l'info de UcValue, la propriété UcContent marche a merveille, j'écris facilement n'importe quoi dans le label de mon UserControl .

    Si quelqu'un sait comment faire

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

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

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Points : 129
    Points
    129
    Par défaut
    Résolu,

    Encore une victoire de Canard
    tout simplement dans le code précédent il falait ajouter le text en vert
    [XAML] dans la fenêtre ou est utiliser mon userControl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <myField:FieldTextBox1 UcValue="{Binding myValueID, Mode=TwoWay}" UcContent="{DynamicResource myLabelID}" />
    Je suis trop bon, vénéré moi (content tout de même cela fait même pas une semaine que je code pour la première fois une appli modulaire qui plus est en structure MVVM.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] WPF MVVM, ViewModel d'initialisation
    Par tseki dans le forum C#
    Réponses: 0
    Dernier message: 26/06/2015, 11h39
  2. WPF MVVM, ViewModel à besoin de la vue
    Par EpiTouille dans le forum C#
    Réponses: 2
    Dernier message: 05/05/2015, 16h13
  3. [WPF - MVVM] Communications entre ViewModels
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 06/02/2012, 14h06
  4. WPF MVVM : créer un viewmodel - .cs dans .xaml
    Par zulad dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 30/09/2011, 18h45
  5. [MySQL] Envoi d'informations vers un script externe...
    Par tom06440 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/10/2005, 18h00

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