我正在创建一个UserControl,我希望当我点击该控件中的按钮时,属性(attriibute)会从我的MainWindow修改。 UserControl是从一个单独的项目创建的,并构建为.dll。
我尝试了以下内容:
Window l = Window.GetWindow(this);
问题是因为我的窗口没有被引用,所以我无法访问它(我创建的属性),我不知道该怎么做。如果我试着写“MainWindow”,它说无法找到它。
答案 0 :(得分:0)
您可以使用 Application.Current.MainWindow
获取窗口。它将返回window对象,因此请确保将其类型化为窗口的实际实例。
假设实际实例是MainWindow
,可以像这样访问它:
MainWindow window = (MainWindow)Application.Current.MainWindow;
答案 1 :(得分:0)
您可以通过多种方式访问WPF中对主Window
的引用。 @Rohit Vats有办法告诉你:
MainWindow window = (MainWindow)Application.Current.MainWindow;
然而,正如您所注意到的, 始终有效。有时可以通过将属性设置为MainWindow
实例来修复它:
public MainWindow()
{
Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Application.Current.MainWindow = this;
}
您现在应该可以从此媒体资源访问MainWindow
了。但是,如果仍因某些原因无效,那么您也可以尝试Application.Windows
property:
foreach (MainWindow window in Application.Windows.OfType<MainWindow>())
{
// Do something with window here
}