Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF MVVM导航取消已处理?_Wpf_Mvvm - Fatal编程技术网

WPF MVVM导航取消已处理?

WPF MVVM导航取消已处理?,wpf,mvvm,Wpf,Mvvm,在我的WPF项目中,MVVM模式。我可以根据主窗口中的情况显示不同的视图。切换视图时,我找不到如何发出用户确认请求,如果用户不批准,视图也不会更改。你能告诉我你对这方面的建议吗?如果有的话,你可以提供一些示例文章或项目吗?非常感谢你 您可以在MessageBox中询问用户,若用户不接受更改视图,则什么也不做 public class UpdateViewCommand : ICommand { private MainViewModel viewModel; public U

在我的WPF项目中,MVVM模式。我可以根据主窗口中的情况显示不同的视图。切换视图时,我找不到如何发出用户确认请求,如果用户不批准,视图也不会更改。你能告诉我你对这方面的建议吗?如果有的话,你可以提供一些示例文章或项目吗?非常感谢你



您可以在MessageBox中询问用户,若用户不接受更改视图,则什么也不做

public class UpdateViewCommand : ICommand
{
    private MainViewModel viewModel;
    public UpdateViewCommand(MainViewModel viewModel)
    {
        this.viewModel = viewModel;
    }
    public event EventHandler CanExecuteChanged;
    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        MessageBoxResult res = MessageBox.Show("Do you confirm changing view?", "", MessageBoxButton.YesNo);
        if (res != MessageBoxResult.Yes)
            return;

        if (parameter.ToString() == "Home")
        {
            viewModel.SelectedViewModel = new HomeViewModel();
        }
        else if (parameter.ToString() == "Portfolio")
        {
            viewModel.SelectedViewModel = new PortfolioViewModel();
        }
    }
}

为“更改页面”按钮创建事件处理程序。从此事件处理程序显示自定义对话框。自定义对话框是一个窗口,其中包含一个绑定到实际导航命令的“确定”按钮和一个“无操作取消”按钮。许多按钮可更改页面。还有菜单。那里还有很多按钮。你是什么意思?我不明白你的意思。您可以将同一事件处理程序附加到多个按钮。我不确定我是否了解发生的情况。他们点击一个按钮来导航。那么你想让他们确认他们想导航吗?真的。那种对话已经过时了。他们太过分了。最好提供一种类似撤销的行为,在离开前保存当前页面的状态,以允许用户返回他离开的地方。