C# 从类调用方法到窗口

C# 从类调用方法到窗口,c#,wpf,C#,Wpf,在WPF中,我得到了一个窗口,其中有一个按钮和一个大的文本块,在这个类中,我得到了一个公共方法,该方法将文本设置为窗口中的文本块。问题是,这不起作用,我很不明白为什么。代码如下所示: 在MainWindow.xaml.cs中 private void GoButton_Click(object sender, RoutedEventArgs e) { Watcher watcher = new Watcher(); watcher.StoryMode(

在WPF中,我得到了一个窗口,其中有一个按钮和一个大的文本块,在这个类中,我得到了一个公共方法,该方法将文本设置为窗口中的文本块。问题是,这不起作用,我很不明白为什么。代码如下所示:

在MainWindow.xaml.cs中

  private void GoButton_Click(object sender, RoutedEventArgs e)
    {
        Watcher watcher = new Watcher();
        watcher.StoryMode();
    }
下面是《课堂观察者》中的公共void故事模式:

    string text1 = @"C:/Users/Desktop/Folder/1.txt";
    string mainText;
    MainWindow mw = new MainWindow();

    public void StoryMode()
    {
            mainText = text1;
            mw.textBlock_story.Text = File.ReadAllText(mainText);
    }
每次我点击按钮时,什么都没有发生,当我尝试调试时,我可以看到它从Watch类调用函数,但什么都不做。当我尝试相同的代码时,但在Watch类之外,在主窗口内,如下所示:

    private void GoButton_Click(object sender, RoutedEventArgs e)
    {
        string text1 = @"C:/Users/Desktop/Folder/1.txt";
        string mainText;
        mainText = text1;
        textBlock_story.Text = File.ReadAllText(mainText);
    }
一切都很好,但我觉得这不是我想要的


有人能解释一下为什么会发生这种情况,以及如何为这个问题找到更好的解决方案吗?

您的窗口类需要创建一个watcher类的实例。然后它应该从watcher类中提取文本数据

 class Watcher
{
    public string mainText;
    void StoryMode()
    {
        mainText = "Example Text";
    }

}

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

    void Get_Text()
    {
        Watcher MyWatcher = new Watcher();
        texblock_story_text = MyWatcher.mainText;
    }


}

您是否尝试过将watcher设置为主窗口的成员并对其进行如下初始化:watcher=new watcher;例如,在MainWindow的构造函数中?MainWindow是窗口的一个新实例,如果您希望更改当前显示的窗口内容,则不会发生这种情况。如果你想显示一个新窗口,那么别忘了给show打电话。而且…嗯…实际上应该有一个ViewModel,而不是一个填充UI控件内容的单独类