在内部类中设置 WPF 文本框值

Posted

技术标签:

【中文标题】在内部类中设置 WPF 文本框值【英文标题】:Set WPF Textbox Value in innerclass 【发布时间】:2015-11-09 13:37:01 【问题描述】:

这可能是一个菜鸟问题,但我不是一个有经验的程序员

我将 WCF 与 WPF 结合使用来创建带有 GUI 的聊天室。我的问题是我想使用回调处理程序来设置带有传入消息的文本框的值。因为这是一个内部类,所以我不能调用文本框。有人知道这个问题的解决方案吗?

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");
        
    

谢谢!

【问题讨论】:

【参考方案1】:

由于 CallbackHandler 是一个自定义类,您可以在创建对象时通过参数化构造函数将 MainWindow 中的 TextBox 传递给该类。在传递引用时,您也可以通过回调处理程序类更改该 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 页面中已经存在的 TextBox。

【讨论】:

以上是关于在内部类中设置 WPF 文本框值的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid - 从 DataGrid ItemsSource 对象的集合值中设置唯一的每行(对象)组合框值

四种内部类

在内部类中执行main方法[重复]

局部内部类详解

局部内部类和成员内部类

日常小结-在内部类中必须使用Atomic原子类替换volatile类