我的目标是执行一些业务逻辑,然后导航到其他页面。 此外,我想将业务逻辑与导航分开,因为我认为不应根据MVVM模式将此过程委托给ModelView逻辑。如果我错了,请纠正我。 为了实现这一点,我在我的ViewModel中为业务逻辑创建了一个命令:
SubmitOrderCommand = new DelegateCommand<string>(SubmitOrderExecute, SubmitOrderCanExecute);
...
private void SubmitOrderExecute(string obj)
{
var rnd = new Random();
int tableIndex = rnd.Next((int)base.Repository.Tables.Count());
base.Repository.Orders.Add(
new Order()
{
Complete = false,
Expedite = true,
SpecialRequests = SpecialRequestText,
...
Items = CurrentlySelectedMenuItems.ToList<MenuItem>()
});
this.CurrentlySelectedMenuItems.Clear();
//TODO:Have to navigate to other page after doing all these stuff
}
这是明显的XAML部分,没什么特别的
<Button Content="Submit Order" Command="{Binding SubmitOrderCommand}" />
问题是,在我执行命令后如何导航到其他页面并严格遵循MVVM模式。我知道我可以使用EventTrigger,但是如果它存在则寻找任何其他解决方案......
答案 0 :(得分:2)
添加服务以在需要时导航到其他页面。 它使用服务,它不会破坏MVVM模式。
如果您有plusalsight帐户,我建议您使用此课程: https://app.pluralsight.com/player?course=practical-mvvm&author=gill-cleeren&name=practical-mvvm-m4&clip=0&mode=live