【问题标题】:C# WPF How to set MainWindow.contentControl.Content from already opened UserControlC# WPF 如何从已打开的 UserControl 设置 MainWindow.contentControl.Content
【发布时间】:2014-04-11 22:49:41
【问题描述】:

如何从已打开的 UserControl 中设置 MainWindow.contentControl.Content?

在我的 MainWindow 中,我加载了一个 UserControl,我想再次覆盖 MainWindow.contentControl.Content 但是当我这样做时,我的整个菜单消失了,它在 ContentControl 上方定义:(

[CODE] 主窗口

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>

[CODE] MyUserControl

public MyUserControl()
    {
        InitializeComponent();
        Application.Current.MainWindow.Content = new MyUserControlNEW();
    }

【问题讨论】:

    标签: c# wpf xaml user-controls


    【解决方案1】:

    当您分配 Application.Current.MainWindow.Content 时,您实际上删除了窗口的根 Grid。

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

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

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

    【讨论】:

    • 这正是我所搜索的。非常感谢!!!我会尽快尝试理解 MVVM 模式。
    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2010-09-23
    相关资源
    最近更新 更多