【发布时间】:2018-12-06 13:55:59
【问题描述】:
当我尝试从 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();
}
【问题讨论】:
-
那么这个案例的解决方法是什么?
-
两边都需要初始化一个类才能做某事,你怎么看它断链?
-
如果你要直接引用窗口中的控件,只需将逻辑放入MainWindow中还是不可能的?或者取出App.xaml中的
StartupUri="MainWindow.xaml",将窗口创建和设置的逻辑放到App.xaml.cs中 -
有很多页面使用这个功能,如果是这样,我必须为我拥有的每个类都编写它