背景
最近在做番茄项目,有一个问题就是,我在个性设置里边设置了主窗体的颜色,但是原本的主窗体颜色并没有变,而是改变了新加载出的窗体的颜色,而我需要的不是加载一个新窗体,需要的是在原有的窗体上变色。这就需要单例模式了,确保只有一个主窗体,而且还能主窗体的方法。
实现
主窗体
1、先添加单例模式
//添加单例模式
private static MainWindow instance;
public static MainWindow GetInstance()
{
if (instance == null)
{
instance = new MainWindow();
}
return instance;
}
2、添加改变颜色的方法
public void Skins()
{
instance.Grid.Background = GlobalData.color;
}
3、还有一点很重要,就是在主窗体的初始化事件中,需要为instance赋初始值
public MainWindow()
{
InitializeComponent();
instance = this;
}
子窗体(也就是设置颜色的窗体)
在子窗体中需要出发的事件里调用主窗体的方法就行
private void btnOk_Click(object sender, RoutedEventArgs e)
{
//改变主窗体颜色
MainWindow.GetInstance().Skins();
}