C#WPF如何从已打开的UserControl设置MainWindow.contentControl.Content
本文关键字:设置 UserControl MainWindow contentControl Content C#WPF | 更新日期: 2023-09-27 17:58:02
如何从已打开的UserControl设置MainWindow.contentControl.Content?
在我的MainWindow中,我从我想再次覆盖MainWindow.contentControl.Content的位置加载UserControl,但当我这样做时,我的整个菜单消失了,它在contentControl之上定义:(
[代码]主窗口
public MainWindow()
{
InitializeComponent();
this.contentControl.Content = new MyUserControl();
}
[XAML]主窗口
<Grid>
<DockPanel>
<Menu IsMainMenu="True" DockPanel.Dock="Top">
<MenuItem Header="_Application">
</MenuItem>
</Menu>
<ContentControl x:Name="contentControl"/>
</DockPanel>
</Grid>
[代码]MyUserControl
public MyUserControl()
{
InitializeComponent();
Application.Current.MainWindow.Content = new MyUserControlNEW();
}
当分配Application.Current.MainWindow.Content时,实际上会删除窗口的根网格。
一种解决方案是按如下名称查找ContentControl:
(Application.Current.MainWindow.FindName("contentControl") as ContentControl).Content = new MyUserControlNEW();
但是为了代码的可维护性,您确实应该避免以这种方式操纵控件。尝试实现MVVM模式。