在MainWindow.xaml.cs中,我通常会这样做:
this.Content = new MyPage();
其中MyPage是在可视化设计器中创建的WPF页面。
工作正常,但如何从MyPage.xaml.cs中将主窗口的内容设置为另一个页面?
感谢。
答案 0 :(得分:0)
就像我在评论中所说,你需要获得对应用程序主窗口的引用。您可以使用以下代码执行此操作:
var mainWindow = Application.Current.MainWindow;
然后您可以直接设置其内容,就像在“MainWindow.xaml.cs”中一样:
mainWindow.Content = new Page1();
如果您需要获取或设置特定于窗口实现的内容,可以使用上述方法转换对象:
var mainWindow = Application.Current.MainWindow as MyWindow;
if (mainWindow != null)
mainWindow.MyProperty = someValue;
(其中MyWindow
是主窗口类的名称,MyProperty
是该类中定义的某些属性。)
或者,您可以创建在构造函数中初始化的主窗口的静态singleton:
public static readonly MyWindow Singleton;
public MyWindow()
{
InitializeComponent();
if (Singleton == null)
Singleton = this;
}
然后您可以像访问静态属性一样访问它:
MyWindow.Singleton.MyProperty = someValue;
这种方法的好处是也可以在其他窗口上使用。
(我只会在只在程序生命周期内打开一次的窗口上推荐这个。但是。如果你有一个单独的窗口会创建多个实例,那么Singleton
会只能为第一个设置。)