如何在单击验证后以编程方式导航到屏幕
本文关键字:方式 编程 导航 屏幕 单击 验证 | 更新日期: 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连接到Viewthis.DataContext = new MainViewModel();
并使用:
将命令连接到按钮<Button content="Next view" Command="{Binding NextViewCommand}"/>
我认为这是最好的方法,对你有帮助。