WPF多窗口传参解决方案

在WPF中,我们的常常涉及到多个窗口之间传递参数的问题,那么该怎么传呢?

答:在窗口的构造函数中添加想要传递的参数。(我表达不好,请看下面代码。)

在主窗口中单机button打开一个新的子窗口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//主窗口类部分如下:
 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            NewWindow newWindow = new NewWindow(string str);
            newWindow.ShowDialog();
        }
    }

  子窗口类中如下:

1
2
3
4
5
6
7
8
9
10
11
12
public partial class NewWindow : Window
   {
       public string str{ get; set; }
       public NewWindow(string  strRef)
       {
           str = strRef;
           InitializeComponent();
            
       }
 
      //可以对str变量引用了。     
   }

  注意:我们这传递的参数如果是值类型(int,char,double)等,那么数据的传递就是单向的,即只能从父窗口到子窗口。

所以,如果想要实现父窗口于子窗口之间可以互相传递参数,那么我们必须要通过传递引用类型的变量来实现(string类型除外)。

至于为什么,应该就是参数传递在底层的操作造成的。(可能和c,c++中的传递方式一样,即,将传递的参数的拷贝传递过去,

我猜的。可能和底层操作不一样,但是最起码表象是相同的。)

posted @   DemoApp  阅读(5284)  评论(14编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示