С# двойное экранное приложение, как изменить рамку главного окна из второго окна?

У меня есть приложение, которое работает на двух экранах, второй экран - панель настроек. На панели настроек мне нужно обновить содержимое фрейма в главном окне. Я использую этот код:

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 каждый раз, когда я его запускаю... Я думаю, что это не лучший подход, возможно, я столкнусь с некоторой проблемой, связанной с памятью. Итак, если это проблематично, как я понимаю, чтобы получить доступ к кадру текущего mainWindow и изменить его без повторного запуска?

Application curApp = Application.Current;
Window mainWnd = curApp.MainWindow;

Я также попробовал этот код, но таким образом я не могу найти в mainWnd элемент _mainframe.

1 ответ

Главное окно всегда может быть доступно Application.Current, но оно возвращается как окно. Однако, поскольку вы знаете, что это должно быть, вы можете просто бросить его:

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

licensed under cc by-sa 3.0 with attribution.