【发布时间】:2011-09-28 00:43:08
【问题描述】:
我正在使用 MVVM 模式在 WPF 中工作,而且通常情况下似乎工作得很好,因为我的大脑围绕着 WPF 和 MVVM 的细微差别。但是,我目前被困在一个特定问题上。我的实际应用程序相当复杂,所以为了简化,让我们以 Josh Smith 的near-defining article 为模式,并在其中使用应用程序。
考虑图 2,并假设用户在名字和姓氏字段中输入了一些内容。然后用户通过单击不同的客户选项卡或可能在同一应用程序中完全不同的视图模型完全离开工作区(视图模型)。在这种情况下,我希望应用程序询问“嘿,你想保存你的更改吗?是/否/取消”并做出适当的回应。这带来了……挑战。
因为我希望用户能够“取消”第一次通过建议需要 PreviewLostKeyboardFocus(因为我可以设置 Handled=true 并取消焦点转移)。但是,一些用户操作(例如单击不同工作区的选项卡)不会转移键盘焦点。 LostFocus 在这方面更好地覆盖了我,但这只是在焦点已经丢失之后(当然我可以将其切换回来?)并且确定事件是否来自视图本身存在问题(即,我们要离开整个视图)或者它只是从某个包含的对象中冒出来的。
所有这一切的大图 - 这似乎是视图的一个问题,但这意味着在视图中编写代码而不是魔术视图模型。这让我觉得我没有正确看待这个。
所以我希望我错过了一些重要的概念性的 a-ha,这将使这一切变得清晰。帮忙?
【问题讨论】:
标签: wpf focus viewmodel lost-focus