c#双屏应用程序,如何从第二个窗口更改主窗口的框架?

时间:2014-04-22 07:42:08

标签: c# wpf windows

我有一个适用于两个屏幕的应用,第二个屏幕是一个设置面板。在设置面板中,我需要刷新主窗口中框架的内容。我正在使用此代码:

  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元素。

1 个答案:

答案 0 :(得分:0)

Application.Current始终可以访问主窗口,但它将作为Window返回。但是,既然你知道它应该是什么,你就可以投它:

var mainWin = Application.Current.MainWindow as MainWindow;
Debug.Assert( mainWin != null ); //sanity check
//do things with mainWin