HY,
在我的MainWindow.xaml.cs文件中,我创建了一个getter来获取对我的列表框的引用。
public ListBox LoggerList
{
get { return Logger; }
}
现在我想从普通类访问LoggerList但我不工作。我尝试了以下方法:
MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
object selectedItem = parentWindow.LoggerList;
但这仅适用于* xaml.cs文件,而不适用于普通的* .cs文件。
最好的祝福
有很多方法可以访问 Window
在WPF中。如果你有几个打开,那么你可以像这样迭代它们:
foreach (Window window in Application.Current.Windows) window.Close();
如果您有特定类型的自定义 Window
,你可以用这个:
foreach (Window window in Application.Current.Windows.OfType<YourCustomWindow>())
((YourCustomWindow)window).DoSomething();
如果你刚刚参考了 MainWindow
,那么你可以简单地使用这个:
Window mainWindow = Application.Current.MainWindow;
但是,使用此方法,它有可能返回 null
。在这种情况下,请确保设置 MainWindow
在它的构造函数中的this属性:
// From inside MainWindow.xaml.cs
Application.Current.MainWindow = this;
但应该注意,@ woutervs是正确的......你应该这样做 不 从中访问UI控件 Window
在图书馆课程中。你真的应该将数据绑定到 ListBox.ItemsSource
然后操纵数据集合。
更新>>
我不知道你为什么 Application.Current
对象是 null
...这可能是因为你已经将你的类库加载到另一个库中 AppDomain
。无论哪种方式,我认为你错过了大局。实际上没有理由为类库类需要对main的引用 Window
。
如果您需要对数据集合执行一些工作,那么只需从后面的代码或视图模型中传递数据集合。工作完成后,只需将其传递回您可以访问的UI ListBox
和/或绑定到数据的集合 ItemsSource
属性。