从UserControl修改MainWindow的属性

时间:2014-02-01 17:30:17

标签: wpf parent

我正在创建一个UserControl,我希望当我点击该控件中的按钮时,属性(attriibute)会从我的MainWindow修改。 UserControl是从一个单独的项目创建的,并构建为.dll。

我尝试了以下内容:

Window l = Window.GetWindow(this);

问题是因为我的窗口没有被引用,所以我无法访问它(我创建的属性),我不知道该怎么做。如果我试着写“MainWindow”,它说无法找到它。

2 个答案:

答案 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
}