【问题标题】:How to bind both Clicked event and a Command, so the Command will be executed first?如何绑定 Clicked 事件和 Command,使 Command 优先执行?
【发布时间】:2016-05-30 06:35:21
【问题描述】:

我的目标是执行一些业务逻辑,然后导航到其他页面。 此外,我想将业务逻辑与导航分开,因为我认为根据 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,但如果存在其他解决方案,请寻找...

【问题讨论】:

    标签: c# windows mvvm windows-runtime windows-10-universal


    【解决方案1】:

    添加服务以在需要时导航到其他页面。 如果您使用服务,它不会破坏 MVVM 模式。

    如果您有 plusalsight 帐户,我向您推荐这门课程: https://app.pluralsight.com/player?course=practical-mvvm&author=gill-cleeren&name=practical-mvvm-m4&clip=0&mode=live

    【讨论】:

    • 谢谢,太棒了!将为此购买 Pluralsight 帐户。
    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多