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();
    }

C#WPF如何从已打开的UserControl设置MainWindow.contentControl.Content

当分配Application.Current.MainWindow.Content时,实际上会删除窗口的根网格。

一种解决方案是按如下名称查找ContentControl:

(Application.Current.MainWindow.FindName("contentControl") as ContentControl).Content = new MyUserControlNEW();

但是为了代码的可维护性,您确实应该避免以这种方式操纵控件。尝试实现MVVM模式。