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

peter351 Messages postés 63 Statut Membre -  
 Utilisateur anonyme -
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.

4 réponses

  1. Utilisateur anonyme
     
    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
    1. peter351 Messages postés 63 Statut Membre 3
       
      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
  2. Utilisateur anonyme
     
    Tu débutes en C# ou en WPF?

    0
    1. peter351 Messages postés 63 Statut Membre 3
       
      Un peu les deux en réalité ^^ mais j'ai des bases en C# que je n'ai pas en WPF
      0
  3. Utilisateur anonyme
     
    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