无法从另一个类WPF更新MainWindow文本框

时间:2013-11-22 02:33:54

标签: c# wpf textbox

当我尝试从另一个类更新文本框时,为什么我的文本框无法更新?

我已经在我的电子邮件类中实例化了MainWindow类,但当我尝试时

main.trending.Text += emailText;

我做错了吗?

2 个答案:

答案 0 :(得分:0)

您应该绑定数据。

<强>模型

public class YourData : INotifyPropertyChanged
{
  private string _textBoxData;

  public YourData()
  {
  }

  public string TextBoxData
  {
      get { return _textBoxData; }
      set
      {
          _textBoxData = value;
          // Call OnPropertyChanged whenever the property is updated
          OnPropertyChanged("TextBoxData");
      }
  }

  // Create the OnPropertyChanged method to raise the event 
  protected void OnPropertyChanged(string name)
  {
      PropertyChangedEventHandler handler = PropertyChanged;
      if (handler != null)
      {
          handler(this, new PropertyChangedEventArgs(name));
      }
  }

}

XAML绑定

  1. 在Codebehind中设置数据上下文

    this.DataContext = YourData;

  2. 绑定属性

     <TextBox Text="{Binding Path=Name2}"/>
    

答案 1 :(得分:0)

请参阅@ sa_ddam213评论。不要在电子邮件类中执行MainWindow main = new MainWindow();之类的操作。而是传递您已有的MainWindow对象。 以下代码将起作用:

public class MainWindow
{
    public void MethodWhereYouCreateEmailClass()
    {
        Email email = new Email;
        email.Main = this;
    }
}

public class Email
{
    public MainWindow main;

    public void MethodWhereYouSetTrendingText()
    {
        main.trending.Text += emailText;
    }
}

但我不说这是最佳做法。我只是试着让它接近你现有的代码。