如何绑定 Clicked 事件和 Command,使 Command 优先执行?
Posted
技术标签:
【中文标题】如何绑定 Clicked 事件和 Command,使 Command 优先执行?【英文标题】:How to bind both Clicked event and a Command, so the Command will be executed first? 【发布时间】: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,但如果存在其他解决方案,请寻找...
【问题讨论】:
【参考方案1】:添加服务以在需要时导航到其他页面。 如果您使用服务,它不会破坏 MVVM 模式。
如果您有 plusalsight 帐户,我向您推荐这门课程: https://app.pluralsight.com/player?course=practical-mvvm&author=gill-cleeren&name=practical-mvvm-m4&clip=0&mode=live
【讨论】:
谢谢,太棒了!将为此购买 Pluralsight 帐户。以上是关于如何绑定 Clicked 事件和 Command,使 Command 优先执行?的主要内容,如果未能解决你的问题,请参考以下文章
WPF 菜单事件绑定 DataTemplate下button Command事件绑定 DataTemplate遍历实体数据
Tkinter中的多个键事件绑定 - “Control + E”“Command(apple)+ E”等