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 :

Accès à une propriété depuis une autre Window


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 40
    Points : 31
    Points
    31
    Par défaut Accès à une propriété depuis une autre Window
    Bonjour à tous,

    Je rencontre un problème lorsque je veux modifier une propriété d'un contrôle d'une WindowX à partir d'une WindowY.


    WindowMain.xaml :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button Name="buttonTest" IsEnabled="False" >Button</Button>

    WindowMain.xaml.cs :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public WindowMain()
    {
     InitializeComponent();
    }

    Dans ma seconde fenètre, celle qui est cencé activer le bouton de ma fenêtre 1 lors d'un évènement :

    WindowSelectModule.xaml.cs :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void BoutonConfirmerChoix_Click(object sender, RoutedEventArgs e)
    {
    	 new WindowMain().buttonTest.IsEnabled = true;
    }

    Pas de problème de compilation mais à l'éxécution cela me génère une exception de type XamlParseException :

    Impossible de convertir la valeur de l'attribut 'Content' en objet de type 'System.Object'. L'élément spécifié est déjà l'enfant logique d'un autre élément. Déconnectez-le d'abord. Erreur à l'objet 'System.Windows.Controls.ContentControl' dans le fichier de balisage 'DiagramDesigner;component/windowmain.xaml'.
    Ps : la fenêtre 2 est ouverture via fenetre.ShowDialog();

  2. #2
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Bonjour,

    Pourquoi tu créé une nouvelle instance de ta fenetre MainWindows pour modifier le bouton de celle existante ?

    Si j'ai bien compris, MainWindows ouvre WindowSelectModule qui modifie finalement une propriétée de MainWindows ?

    Comment as tu rendu accessible buttonTest ?
    Jonathan ANTOINE - Découvrez mon livre: MVVM, de la découverte à la maîtrise.

    Microsoft MVP Client Application Development
    - MCPD Windows 4.0, etc.
    Mon blog : http://www.jonathanantoine.com

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Bonjour jmix90,

    Je débute en C#, enfaite j'aimerais récupèrer l'instance WindowMain et accèder aux contrôle de cette instance, mais comment faire, méthode static, get ?

    buttonTest n'est définis qu'en WPF dans WindowMain.xaml pas dans le codebehind, comment rendre ce contrôleur public ?

    Merci à toi.

  4. #4
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Hello,

    Tu peux défnir une propriété "Bouton" sur ta classe WindowSelectModule et lorsque la fenêtre main instancie la fenêtre WindowSelectModule alors elle renseigne cette propriétée. Ensuite, la fenêtre WindowSelectModule met à jour ce bouton directement.

    Bon courage,
    Jonathan ANTOINE - Découvrez mon livre: MVVM, de la découverte à la maîtrise.

    Microsoft MVP Client Application Development
    - MCPD Windows 4.0, etc.
    Mon blog : http://www.jonathanantoine.com

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Merci ca marche parfaitement dans ce cas la.

    Mais mon application est un peu plus complexe ce n'est pas WindowMain qui ouvre directement WindowSelectModule, cela passe via des fichier design .xaml et puis vers un Commands.cs qui lui exécute l'ouverture de la fenêtre.

    N'y a t'il pas moyen d'obtenir une référence statique de ma fenêtre principale accessible par tous ?

    Vus que dans WindowMain.xaml.cs je ne sais pas faire

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
              public static Window GetWindowMain()
            {
                return this;
            }

  6. #6
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Si c'est vraiment ta fenêtre principale, elle est accessible via Application.Current.MainWindows et tu peux lui rajouter une propriétée Button :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Button monButton{get{return this.buttonTest;}}
    Jonathan ANTOINE - Découvrez mon livre: MVVM, de la découverte à la maîtrise.

    Microsoft MVP Client Application Development
    - MCPD Windows 4.0, etc.
    Mon blog : http://www.jonathanantoine.com

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Oui c'est bien ma fenêtre principale dans le "App.xaml" j'ai bien définit StartupUri="WindowMain.xaml".

    J'ai bien rajouter à "WindowMain.xaml.cs" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Button monButton { get { return this.buttonTest; } }
    Mais quand je vais dans ma seconde fenêtre dans la classe WindowSelectModule.xaml.cs j'appelle :

    Application.Current.MainWindow. je n'ai pas accès à la propriété "monButton".

    Dois-je définir par code que WindowMain est ma fenêtre principale ?

    Merci à toi.

  8. #8
    Membre éprouvé Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Points : 998
    Points
    998
    Par défaut
    Oui, il faut bien que tu penses à la caster :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    (Application.Current.MainWindow as WindowMain).monButton;
    Jonathan ANTOINE - Découvrez mon livre: MVVM, de la découverte à la maîtrise.

    Microsoft MVP Client Application Development
    - MCPD Windows 4.0, etc.
    Mon blog : http://www.jonathanantoine.com

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 40
    Points : 31
    Points
    31
    Par défaut
    Impeccable,merci infiniment pour ton aide et ta patience .

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Accès à une méthode d'une form depuis une autre autre form
    Par arngrimur dans le forum Windows Forms
    Réponses: 16
    Dernier message: 13/01/2012, 15h45
  3. Acces aux control d'une form depuis une classe
    Par PhilCou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2008, 09h59
  4. Réponses: 2
    Dernier message: 26/11/2007, 12h22
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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