有一些在WPF访问Window
S的方式。如果你有几个开放的,那么你可以遍历它们是这样的:如果你是刚吃完
foreach (Window window in Application.Current.Windows.OfType<YourCustomWindow>())
((YourCustomWindow)window).DoSomething();
:
foreach (Window window in Application.Current.Windows) window.Close();
如果你有一个特定类型的自定义Window
的,你可以使用这个参考MainWindow
,那么你可以简单地使用:
Window mainWindow = Application.Current.MainWindow;
但是,使用这种方法,有机会的话,它会返回null
。在这种情况下,请确保您设置MainWindow
这个属性在它的构造函数:
// From inside MainWindow.xaml.cs
Application.Current.MainWindow = this;
但是,应该注意的是,@woutervs是正确的...你应该不从Window
访问UI控件s在图书馆类。您确实应该将数据绑定到ListBox.ItemsSource
,然后改为处理数据收集。
UPDATE >>
我不知道为什么你的Application.Current
对象是null
......这可能是因为你已经加载了类库到不同的AppDomain
。无论如何,我认为你错过了大局。实际上,没有理由为什么一个类库类应该需要引用主要的Window
。
如果您需要在数据收集上执行一些工作,那么只需从后面的代码或视图模型传递数据收集。工作完成后,只需将其传回到可访问ListBox
和/或与ItemsSource
属性数据绑定的集合的UI。
一个WPF列表框是绑定的,而不是有一个属性,您列表框,你应该有一个属性包含您的项目源,并将其绑定到列表框(LoggerList.ItemSource = myList中;然后,你就可以绑定你你可以使用它们,你现在处理它的方式是不正确的,你应该看看绑定和基本的WPF示例。 – woutervs
试试这个:'window parentWindow = Application.Current。 MainWindow'。 –
Hy,试着用Window parentWindow = Application.Current.MainWindow。但是我不能得到LoggerList。 – user2644964