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