如何在单击验证后以编程方式导航到屏幕

本文关键字:方式 编程 导航 屏幕 单击 验证 | 更新日期: 2023-09-27 18:11:21

我继承了一个sketchflow原型的WPF应用程序。我正在为UI添加功能。

目前,从一个屏幕到另一个屏幕的导航在XAML中定义为如下事件:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
    <pi:NavigateToScreenAction TargetScreen="WpfPrototype1Screens.Screen_1_2"/>
    </i:EventTrigger>
</i:Interaction.Triggers>

这可以工作,但问题是它不允许我在导航到新屏幕之前验证用户输入。

我想知道的是,我如何以编程方式导航到新的屏幕从按钮的点击事件处理程序在c# ?

例如:

private void Button1_Click_1(object sender, RoutedEventArgs e)
{
    if (userInputValid)
    {
        NavigateToScreen_1_2();
    }
}

如何在单击验证后以编程方式导航到屏幕

这很大程度上取决于你如何使用下一个屏幕。如果它是一个UserControl (View),插入到应用程序的另一部分,比如ContentControl,那么你可以把content控件的内容更改到你的新屏幕。

看看WPF中与MVVM结合使用的命令。这可以帮助你解决问题。不是OnClick事件而是在ViewModel中定义一个execute函数并且有一个公共属性可以绑定到按钮Command属性

有一个简单的类:

public class MainViewModel
{
    public MainViewModel()
    {
        NextViewCommand = new DelegateCommand(NextView);
    }
    public ICommand NextViewCommand {get;set;}
    public UserControl NewView {get;set;}
    public void NextView()
    {
         NewView = new UserControl() //set your NewView property to your new usercontrol 
         //Apply validation on all your binded properties you want to validate.
    }
}

DelegateCommands

使用:

将ViewModel连接到View
this.DataContext = new MainViewModel();

并使用:

将命令连接到按钮
<Button content="Next view" Command="{Binding NextViewCommand}"/>

我认为这是最好的方法,对你有帮助。