我有一个prism / mvvm视图,并希望在视图丢失或失去焦点时通知ViewModel。
我猜我需要将View的GotFocus绑定到ViewModel中的一个动作,但我不知道如何开始这个。
当然这是一个已在某处解决的标准问题,而我只是找不到解决方案?
答案 0 :(得分:1)
您可以使用InvokeCommandAction行为。此行为在程序集System.Windows.Interactivity中定义,它是Expression Blend的一部分。通过此行为,您可以绑定到视图的GotFocus事件并在viewModel中执行命令。
您可以使用相同的方法进行LostFocus。 Here是一个如何使用InvokeCommandAction的例子。
关于UserControl的GotFocus的一件事。您应该知道,当控件(如TextBox)获得焦点时,将引发View的GotFocus事件。您无法通过自己关注UserControl。
<强> [更新] 强> 当IsTabStop设置为true时,会引发UserControl的GotFocus
你不能使用prism框架的IActiveAware接口吗?在视图在区域中导航时,将设置IsActive属性。
接口可以在View和ViewModel上实现(要求viewmodel实例设置为视图的DataContext),以便在区域中激活视图时收到通知。