Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从另一个wpf窗口添加wpf列表框项_C#_Wpf_Blend - Fatal编程技术网

C# 从另一个wpf窗口添加wpf列表框项

C# 从另一个wpf窗口添加wpf列表框项,c#,wpf,blend,C#,Wpf,Blend,有人知道如何从另一个WPF窗口向WPF列表框(在blend上创建的窗口)添加项目吗 我有以下代码 mainpage mp = new mainpage(); mp.listbox1.Items.Add(namebox.Text); 谢谢大家两种解决方案: 使用参数创建构造函数并将其添加到构造函数中 主页mp=新主页(namebox.Text) 公共主页(字符串newItem){ this.listbox1.Items.Add(namebox.Text); } 公开该列表并访问该

有人知道如何从另一个WPF窗口向WPF列表框(在blend上创建的窗口)添加项目吗

我有以下代码

mainpage mp = new mainpage();
        mp.listbox1.Items.Add(namebox.Text);
谢谢大家

两种解决方案:

  • 使用参数创建构造函数并将其添加到构造函数中

    主页mp=新主页(namebox.Text)

  • 公共主页(字符串newItem){ this.listbox1.Items.Add(namebox.Text); }

  • 公开该列表并访问该列表

  • 您可以使用
    System.Windows
    -命名空间中的
    应用程序
    -类。使用

    System.Windows.Application app = System.Windows.Application.Current;
    System.Windows.WindowCollection wincol = app.Windows;
    //iterate through collection and find your window
    

    当然,您需要注意线程,因为通常每个窗口都是在自己的线程中创建的。请参阅以获取更多参考。

    您是否发现了一些问题?上面的代码不会向列表框添加任何内容。此窗口是在Blend上创建的。但是这些代码在正常的wpf窗口上运行良好。什么<代码>每个窗口都是在自己的线程中创建的
    -完全不是真的。如果您在与其他窗口相同的线程中创建一个窗口,则这两个窗口共享同一个调度程序。我同意,但您不会!如何获取信息泵?什么?你为什么要那样?此外,消息泵的概念已被WPF中的调度程序所取代。我不明白你的意思。所有基于
    DispatcherObject
    的类都有
    公共Dispatcher{get;}
    属性。我不明白你所说的消息泵是什么意思。每个窗口(本机)都有一个消息泵,负责获取从窗口发送到每个窗口的消息。没关系,我会自己获取信息的。非常感谢。