无法从另一个 class 设置 MainWindow 拥有的 TextBox 文本

Unable to set a TextBox text owned by MainWindow from another class

我试图从同一命名空间中的另一个 class 设置 MainWindow (WPF Window) 拥有的文本框值文本,但没有任何反应。我已经对类似问题提出了许多建议和答案,但无济于事。令我困惑的是,MainWindow 的 SetText 接收显示在 Visual Studio 控制台中的文本,但对实际文本框没有任何影响。 'ConsoleLog' 文本框具有默认的 XAML 值。

所以我的 MainWindow 与此类似:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }    

    public string SetText
    {
        get { return ConsoleLog.Text; }
        set {
            Console.WriteLine(value);
            ConsoleLog.Text = value;
        }
    }
}

在我的应用程序中 class:

public partial class App : Application
{
    private void Test()
    {
        var mw = new MainWindow();
        mw.SetText = "Please display something!";
    }
}

我尝试了其他几种方法,例如:

((MainWindow)System.Windows.Application.Current.MainWindow).ConsoleLog.Text = "Please display something!";

但到目前为止没有任何错误消息,没有任何效果。

我是 WPF C# 的新手,我确信这是我遗漏的很明显的东西,但它让我发疯。

WPF 项目默认项目通过配置其 App.xaml 文件启动 MainWindow,而不是 app.xml.cs。如果你想访问 MainWindow ,你应该通过以下代码手动启动 MainWindow

public App()
{
    var mw = new MainWindow();
    mw.SetText = "Please display something!";
    mw.ShowDialog();
}

并从 App.xaml

中删除以下行
StartupUri="MainWindow.xaml"

如果你想开始使用 WPF 应用程序并制作一个好的应用程序,我建议你看一些基础教程,并尝试学习 MVVM(或 Web 中的 MVC)编程方法。