当我尝试从另一个类更新文本框时,为什么我的文本框无法更新?
我已经在我的电子邮件类中实例化了MainWindow类,但当我尝试时
main.trending.Text += emailText;
我做错了吗?
答案 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绑定
在Codebehind中设置数据上下文
this.DataContext = YourData;
绑定属性
<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;
}
}
但我不说这是最佳做法。我只是试着让它接近你现有的代码。