Comment on fait pour modifier la propriété background(couleur) de la fenêtre principale en wpf à partir d'un bouton se trouvant dans une autre fenêtre wpf? Merci d'avance
Version imprimable
Comment on fait pour modifier la propriété background(couleur) de la fenêtre principale en wpf à partir d'un bouton se trouvant dans une autre fenêtre wpf? Merci d'avance
bonjour
pour changer la background d'une form; tu peux faire
avec _mainWindow est ton Window (form).Code:
1
2 _mainWindow.Background = New SolidColorBrush(Colors.Red)
et pour le faire appartir d'une autre form il faut que le from qui contient le bouton doit avoir une instance de la from pour faire ça le peux te donner se code
mainwinodow (la form root ce lui qui démarre la premiere )
et la form deux celui qui contient le boutonCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 class MainWindow { private void Button1_Click(System.Object sender, System.Windows.RoutedEventArgs e) { Window1 win1 = new Window1(this); win1.ShowDialog(); } }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public class Window1 { private MainWindow _mainWindow; public Window1(MainWindow mainWindow) { InitializeComponent(); _mainWindow = mainWindow; } private void Button1_Click(System.Object sender, System.Windows.RoutedEventArgs e) { _mainWindow.Background = new SolidColorBrush(Colors.Red); } }
1 autre solution plus orienté MVVM :
créer une Dependency property sur le Window2 du genre MyBackground de type SolidColorBrush. Dans le xaml du Window2, tu fais un binding sur cette DP.
Ex :
dans le code behind tu n'oublies pas dans le constructeur window2.DataContext = new Window2ViewModel(); ou alors this;Code:
1
2
3
4 <Window x:Name="window2" Background="{Binding MyBackground}"> ... </window>
Puis dans window1, tu fais :
en n'oubliant pas encore de définir le data context de window 1 après le InitializeComponent() du constructeur.Code:<window x:class="window1" xmlns:local="path de l'assembly courrant"> <local:Window2 MyBackground="{Binding MaCouleur}" /> </window>
Ps: normalement tu n'as même pas besoin de créer la dependency property puisque Window à déjà une DP Background que tu peux ré utiliser.
Edit : si tu veux modifier le background d'un popup depuis un autre popup, sur clic d'un bouton :
Dans window2 tu ajoutes un évènement qui prend en entrée une solidColorBrush que tu vas déclencher au clic. Ton mainPage qui appels window1 et window2, s'abonne à cet évènement : this.MyWindow2.EventChangementBackground += ChangerBackground;
et la méthode ChangerBackground(solidcolorbrush nouvelleCouleur) { window1.Background = nouvelleCouleur }
Cette méthode rejoint celle d' azstar