WPF utiliser les variables d'une fenêtre dans une autre fenêtre
peter351
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
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 (
Comment pourrais-je faire pour utiliser les variables dépendantes du bouton ?
Merci par avance,
Peter.
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:
- WPF utiliser les variables d'une fenêtre dans une autre fenêtre
- Fenetre windows - Guide
- Fenêtre hors écran windows 11 - Guide
- Fenetre de navigation privée - Guide
- Utiliser chromecast - Guide
- Utiliser une tablette comme ecran pc - Guide
4 réponses
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.
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.
Mise en application
MainWindow
DeuxiemeFenetre
Et la classe Creator
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
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
Comment faire pour binder la textbox à l'autre fenêtre du coup ?