WPF棱镜Unity容器。将键盘焦点设置在usercontrol或usercontrol grid parent上

时间:2017-11-01 10:15:01

标签: wpf unity-container prism keyboard-events

我正在开发一个利用WPF的项目,使用Prism库和Unity容器。

我有一个主窗口,其中包含一个mainviewmodel控件,该控件又由一组用户控件填充。

我的目标是将键盘焦点设置为mainviewmodel,其中我有一个EventTrigger InvokeCommandAction,它对keyeventsargs作出反应......

目前,如果我在控件(或子控件)中使用文本框,则触发该命令的唯一方法。我的目标是让mainviewmodel控件或网格获得并保持键盘焦点。

任何提示将不胜感激! // Nathan

1 个答案:

答案 0 :(得分:1)

要么没有正确理解你的问题,要么你应该在WPF实现中查看MVVM的基本概念。

View是WPF控件 WPF Window / UserControl文件包含WPF标记,即View。

视图中的控件利用DataBindings控件本身或包含控件的父控件(将继承它)的DataContext属性。

DataContext属性设置为ViewModel对象的实例。它包含用于保存值和执行操作的命令的属性。

所以概念上没有" mainviewmodel控件",有一个包含控件的MainView,在这种情况下可能将其DataContext属性设置为MainViewModel实例。 (因此我的困惑)

最后,尽管有可能,有些人甚至可能会建议在视图模型中编写UI规则/逻辑,但我还没有发现它的好处。

将UI逻辑放在XAML或后面的MinView代码中要好得多。您仍然可以通过将MainView.DataContext属性转换为MainViewModel来访问代码中的MainViewModel。

所以例如: 可以连接MainView.KeyDown事件来调用MainViewModel.CommandX.Execute();