更改 MainWindow 背景颜色 WPF

Changing MainWindow background color WPF(更改 MainWindow 背景颜色 WPF)
本文介绍了更改 MainWindow 背景颜色 WPF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用名为 EditColorDialog 的对话框更改 MainWindow 的背景颜色.该对话框可以很好地读取主窗口的当前背景颜色,但我似乎无法让它更改该颜色.

I am trying to change the background color of the MainWindow using a dialogbox called EditColorDialog. The dialogbox can read the current background color of the main window just fine but I can't seem to get it to change that 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(); 
    }
}

我在主窗口代码中使用这个属性

I am using this property in the main window code

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

推荐答案

每次创建这样的对话框时都会创建一个新的 MainWindow.不是个好主意.

You create a new MainWindow every time you create such a dialog. Not a good idea.

如果有什么你应该设置 Application.MainWindow 在应用程序启动时.然后像这样设置引用:

If anything you should set the Application.MainWindow on application startup. Then set the reference like this:

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

只需使用 nw.Background,您的该属性似乎是静态调用的非静态包装器.这样做你已经有了主窗口.

and just use nw.Background, that property of yours seems like a non-static wrapper for a static call. Doing it this way you already have the main window.

这篇关于更改 MainWindow 背景颜色 WPF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)