在innerclass中设置WPF文本框值
本文关键字:文本 WPF 设置 innerclass | 更新日期: 2023-09-27 18:08:08
这可能是一个新手问题,但我不是一个有经验的程序员。
我正在使用WCF与WPF的组合来创建一个带有GUI的聊天室。我的问题是,我想使用callbackhandler来设置输入消息的文本框的值。因为这是一个内部类,所以我不能调用文本框。有人知道这个问题的解决方法吗?
namespace WPFClient
public partial class MainWindow : Window
{
Service1Client s;
public MainWindow()
{
InitializeComponent();
InstanceContext site = new InstanceContext(new CallbackHandler());
s = new Service1Client(site);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Message m = new Message();
m.Content = txtMessage.Text;
m.User = txtName.Text;
s.SendMessage(m);
}
public class CallbackHandler : IService1Callback
{
public void SendMessageToClients(Message m)
{
//I would like to call an alrdy generated textbox here to set its value, like txtMessageAll.Text("Setting text");
}
}
}
}
谢谢!
由于CallbackHandler是一个自定义类,您可以在创建对象时通过参数化构造函数将TextBox从MainWindow传递给该类。当引用被传递时,你也可以通过回调处理程序类改变TextBox的文本。
public class CallbackHandler
{
public TextBox textValue { get; set; }
CallbackHandler(TextBox tb) {
this.textValue = tb;
}
public void SendMessageToClients(Message m)
{
this.textValue.Text="some_message";
//I would like to call an alrdy generated textbox here to set its value, like txtMessageAll.Text("Setting text");
}
}
从你的MainWindow类
InstanceContext site = new InstanceContext(new CallbackHandler(txtboxMessageAll));
其中"txtboxMessageAll"是已经存在于Xaml页面中的文本框。