modal ejemplo dialogbox c# wpf dialog

c# - ejemplo - Cambio del color de fondo de MainWindow WPF



showdialog c# ejemplo (2)

¿Por qué EditColorDialog contiene otra nueva MainWindow? Supongo que quiere una referencia al MainWindow existente que abre el EditColorDialog no uno nuevo. También supongo que eso es lo que HB quiere decir, tiene una propiedad * b * ackground, pero su MainWindow ya contiene una propiedad llamada * B * aviso de fondo la letra mayúscula ''B''. Al cerrar el Diálogo, ahora puede establecer la propiedad de Fondo en su ventana principal pasada.

Estoy intentando cambiar el color de fondo de MainWindow usando un cuadro de diálogo llamado EditColorDialog. El cuadro de diálogo puede leer el color de fondo actual de la ventana principal muy bien, pero parece que no puedo conseguir que cambie ese color.

public partial class EditColorDialog : Window { ColorDialog colorPicker = new ColorDialog(); //this is a colorpicker MainWindow mw = new MainWindow(); public ColorDialog() { InitializeComponent(); rect.Fill = mw.background; //reads the color off the main window } private void rect_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { colorPicker.Owner = this; if ((bool)colorPicker.ShowDialog()) { //selects new color from colorpicker rect.Fill = new SolidColorBrush(colorPicker.SelectedColor); } } private void OkButton_Click(object sender, RoutedEventArgs e) { mw.background = rect.Fill; this.Close(); } }

Estoy usando esta propiedad en el código de la ventana principal

public Brush background { get { return main_window.Background; } set { main_window.Background = value; } }


Usted crea una nueva ventana principal cada vez que crea dicho diálogo. No es Buena idea.

En todo caso, debe configurar Application.MainWindow al inicio de la aplicación. A continuación, configure la referencia de esta manera:

MainWindow mw = (MainWindow)Application.Current.MainWindow;

y solo use nw.Background , esa propiedad suya parece una envoltura no estática para una llamada estática. Haciéndolo de esta manera ya tienes la ventana principal.