首页 > 解决方案 > 视图模型的页面导航

问题描述

我想从 ViewModel 实现页面导航。正如您在代码中看到的那样,主窗口中有一个必须用页面填充的框架。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition MaxWidth = "175" ></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Grid Grid.Column="1">
        <Frame Background = "Gray" NavigationUIVisibility= "Hidden" Name = "mainFrame" Margin= "0,0,5,0" >
        </Frame>
    </Grid>
</Grid >

在 MainWindowViewModel 中,我实现了必须通过单击“转到下一页”按钮来执行的命令方法。此方法称为“ExecuteOpenTestResultsRecoveryPage”

private void ExecuteOpenTestResultsRecoveryPage(object parameter)
{
    RecoveryPage recoveryPage = new RecoveryPage();
    MainWindow mainWindow = new MainWindow();
    mainWindow.mainFrame.NavigationService.Navigate(recoveryPage);
}

通过单击“转到下一页”按钮,该方法被执行,但框架中没有任何反应,我不明白为什么。请你能帮我实现吗?

谢谢!

标签: c#wpfmvvm

解决方案


当您想要显示新页面时,我不建议您打开新的 MainWindow。最好向视图发送消息以显示特定的其他视图。这样就可以实现关注点分离。


推荐阅读