wpf关于两个窗口之间的数据传输例程

我自己尝试编写上位机程序的时候遇到的一个问题就是,我在子窗口中设置好串口后,想把这个串口号更新到主窗口的UI上,但一直不成功,感觉是子窗口的传值失败导致的,就百度了相关的解决方案。有一个是创建主窗口的对象,通过对象点出来那个label的控件进行赋值,但这个方法失败了,我又参考别人的例子,尝试第二种方式,终于成功了,希望能对大家有所帮助。


    /*新类————————————新类*/
    //这是需要新建的类,事件响应
    public class PassValuesEventArgs : EventArgs
    {
        public string Value { get; internal set; }
        public PassValuesEventArgs(string Value)
        {
            this.Value = Value;
        }
    }

        /*主窗口——————————主窗口*/
        //这是主窗口的点击事件
        private void ItemCOM_Click(object sender, RoutedEventArgs e)

        {
            pages.ItemCOM aw = new pages.ItemCOM();
            //将主窗口设置为拥有者
            aw.Owner = this;
            //将AboutWindow的打开的初始位置设置为在Owner的中央
            aw.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            aw.PassValuesEvent += new pages.ItemCOM.PassValuesHandler(ReceivedValues);
            aw.ShowDialog();
        }
        private void ReceivedValues(object sender, PassValuesEventArgs e)
        {
            LabelCOM.Content = "串口:" + e.Value;
        }

        /*子窗口————————————子窗口*/
        //用于传值
        public delegate void PassValuesHandler(object sender, PassValuesEventArgs e);
        public event PassValuesHandler PassValuesEvent;
        //这是子窗口的确定按钮的点击事件
         private void btnSure_Click(object sender, RoutedEventArgs e)
         {
            MainWindow mw = new MainWindow();
            String strPortName = null;
            if (comn.IsOpen == true)
            {
                strPortName = ComboBoxPortName.SelectedItem.ToString();
            }
            //将打开的串口号显示在主窗口中
            PassValuesEventArgs args = new PassValuesEventArgs(strPortName);
            PassValuesEvent(this, args);
            this.Close();//关闭该窗口
          }

要实现WPF两个页面之间的画面同步,可以使用C# WCF(Windows Communication Foundation)框架。以下是一些基本步骤: 1. 定义服务契约(Service Contract):定义服务契约,包括服务的操作(Operation)和数据合同(Data Contract)。操作定义了服务接口,数据合同定义了传输的数据类型。 2. 实现服务契约(Service Implementation):在服务器端实现服务契约,实现服务的操作逻辑。 3. 配置服务终结点(Service Endpoint):配置服务的地址、绑定和协议等信息,以便客户端可以访问服务。终结点包括服务终结点和元数据终结点。 4. 在WPF页面中生成客户端代理(Client Proxy):在WPF页面中生成客户端代理,使得客户端可以调用服务契约中的操作。客户端代理可以使用svcutil.exe命令行工具或Visual Studio工具自动生成。 5. 在WPF页面中调用服务:在WPF页面中调用服务契约中的操作,从而实现数据的传输。 6. 实现画面同步逻辑:在服务契约的实现中,实现画面同步的逻辑。可以使用WCF的回调机制,将特定的操作结果回传给客户端,从而实现画面同步。 需要注意的是,服务契约的定义和实现必须在两个WPF页面之间共享,服务终结点的配置也必须适合两个页面之间的网络环境,比如可以使用TCP协议或HTTP协议等。同时,还需要考虑服务的安全性、可靠性等方面的问题,以保证画面同步的效果和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值