当我尝试从Utils类更改UI时,我得到错误消息由于StackOverflowException而终止了进程。 ColdStorageDesktopApp.exe中发生了'System.StackOverflowException'类型的未处理异常
class Utils
{
MainWindow mainWindow = new MainWindow();
private bool signedIn = false;
public void UpdateUI()
{
if (signedIn)
{
mainWindow.Sign_In_Button.Visibility = Visibility.Collapsed;
mainWindow.Sign_Out_Button.Visibility = Visibility.Visible;
mainWindow.Balance_Button.IsEnabled = true;
mainWindow.Send_Assets_Button.IsEnabled = true;
mainWindow.Settings_Button.IsEnabled = true;
}
else
{
mainWindow.Sign_In_Button.Visibility = Visibility.Visible;
mainWindow.Sign_Out_Button.Visibility = Visibility.Collapsed;
mainWindow.Balance_Button.IsEnabled = false;
mainWindow.Send_Assets_Button.IsEnabled = false;
mainWindow.Settings_Button.IsEnabled = false;
}
}
这是我的MainWindow.cs
public partial class MainWindow : Window
{
Utils utils = new Utils();
public MainWindow()
{
InitializeComponent();
utils.UpdateUI();
}
答案 0 :(得分:0)
抛出Name
异常是因为创建对象实例的过程不断循环。
StackOverflow
创建MainWindow
,创建Utils
,创建MainWindow
,创建Utils
,创建MainWindow
...等等
您不应该在Utils
中创建MainWindow
。应用程序中应该只有一个Utils
实例。
相反,将MainWindow
实例作为参数提供给MainWindow
实例:
Utils