我有一个适用于两个屏幕的应用,第二个屏幕是一个设置面板。在设置面板中,我需要刷新主窗口中框架的内容。我正在使用此代码:
MainWindow winFirst= new MainWindow();
var primaryScreen = System.Windows.Forms.Screen.AllScreens.Where(s => s.Primary).FirstOrDefault();
if (primaryScreen != null)
{
winFirst._mainFrame.Source = new Uri("DynamicSource.xaml", UriKind.Relative);
winFirst.Show();
}
使用此代码,我可以在第二个窗口中按下按钮,在主窗口中加载我需要的内容。但是这个代码每次启动时都会加载一个新的MainWindow类......我认为这不是最好的approch,也许我会遇到一些与内存相关的问题。所以如果这是一个有问题的approch我怎么做访问当前mainWindow的框架并更改它而不重新启动?
Application curApp = Application.Current;
Window mainWnd = curApp.MainWindow;
我也试过这段代码但是这样我在mainWnd中找不到_mainframe元素。
答案 0 :(得分:0)
Application.Current始终可以访问主窗口,但它将作为Window返回。但是,既然你知道它应该是什么,你就可以投它:
var mainWin = Application.Current.MainWindow as MainWindow;
Debug.Assert( mainWin != null ); //sanity check
//do things with mainWin