WPF utiliser les variables d'une fenêtre dans une autre fenêtre

Fermé
peter351 Messages postés 58 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 22 octobre 2017 - 21 oct. 2017 à 18:24
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 - 22 oct. 2017 à 15:26
Bonjour,

J'essaie actuellement de développer un logiciel simple en wpf et je voudrais pouvoir rentrer des informations dans des TextBox et pouvoir les utiliser dans une seconde fenêtre, par exemple :
Nom : "Bob" -> on clique sur le bouton valider et le nom s'affiche sur la seconde fenêtre.

J'arrive à récupérer les variables étant dans la classe principale (
public partial class Creator : Window
) mais pas celles se situant dans l'espace permettant l'enregistrement des infos en cliquant sur le bouton (
public void Send_Click(object sender, RoutedEventArgs e)
).
 

Comment pourrais-je faire pour utiliser les variables dépendantes du bouton ?

Merci par avance,
Peter.
A voir également:

4 réponses

Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928
21 oct. 2017 à 19:19
Bonjour

WPF est une technologie basée sur le binding.
Ta textbox "Nom" est donc sensée être liée à un objet ayant une propriété "Nom", dans ce cas, il suffit de binder l'autre fenêtre au même objet.
0
peter351 Messages postés 58 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 22 octobre 2017 3
22 oct. 2017 à 11:27
Malheureusement je débute et je ne sais qu'utiliser la méthode :
Creator cr = new Creator();
string name = cr.Nom

Comment faire pour binder la textbox à l'autre fenêtre du coup ?
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928
22 oct. 2017 à 11:48
Tu débutes en C# ou en WPF?

0
peter351 Messages postés 58 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 22 octobre 2017 3
22 oct. 2017 à 14:28
Un peu les deux en réalité ^^ mais j'ai des bases en C# que je n'ai pas en WPF
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928
22 oct. 2017 à 14:48
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 928
22 oct. 2017 à 15:26
Mise en application

MainWindow
<Window x:Class="Test_WPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:def="Definition"
        Title="MainWindow" Height="350" Width="525">

    <Grid DataContext="{Binding .}">
        <TextBox Text="{Binding Nom, UpdateSourceTrigger=PropertyChanged}" Margin="10,10,371,275"/>
        <Button x:Name="MyButton" HorizontalAlignment="Left" Margin="308,120,0,0" VerticalAlignment="Top" Width="75">
            <TextBlock Text="Ciquer ici"/>
        </Button>
    </Grid>
</Window>


using System.Windows;


namespace Test_WPF
{
    /// <summary>
    /// Logique d'interaction pour MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        private Creator createur;


        public MainWindow()
        {
            InitializeComponent();

            createur = new Creator();
            this.DataContext = createur;

            DeuxiemeFenetre autrePage = new DeuxiemeFenetre();
            autrePage.DataContext = createur;
            autrePage.Show();
         }

    }
}


DeuxiemeFenetre
<Window x:Class="Test_WPF.DeuxiemeFenetre"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test_WPF"
        mc:Ignorable="d"
        Title="DeuxiemeFenetre" Height="300" Width="300">
    <Grid DataContext="{Binding .}">
        <TextBox Text="{Binding Nom, UpdateSourceTrigger=PropertyChanged}" Margin="10,10,179,233"/>
    </Grid>
</Window>


Et la classe Creator
using System.ComponentModel;

namespace Test_WPF
{
    public class Creator:INotifyPropertyChanged
    {
        private string nom;
        public string Nom
        {
            get { return nom; }
            set
            {
                if (value == nom)
                    return;

                nom = value;
                GenererPropertyChanged("Nom");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void GenererPropertyChanged(string Propriete)
        {
            if (this.PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(Propriete));

        }
    }
}


Comme tu le voies, dans le cs de MainWindows, on associe le créateur à chaque fenêtre et c'est tout.
Y'a rien dans le cs de DeuxiemeFenetre et la classe Creator implémente iNotifyPropertyChanged
0