Prism / mvvm:如何将View的GotFocus绑定到一个动作?

时间:2011-02-22 10:38:15

标签: mvvm focus prism

我有一个prism / mvvm视图,并希望在视图丢失或失去焦点时通知ViewModel。

我猜我需要将View的GotFocus绑定到ViewModel中的一个动作,但我不知道如何开始这个。

当然这是一个已在某处解决的标准问题,而我只是找不到解决方案?

1 个答案:

答案 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),以便在区域中激活视图时收到通知。