zlgopen / awtk-mvvm

Model-View-ViewModel for AWTK
GNU Lesser General Public License v2.1
88 stars 27 forks source link

关于MVVM中按键绑定问题 #6

Closed zxc3489 closed 4 years ago

zxc3489 commented 4 years ago

你好, 我在xml中为窗口绑定按键事件,大部分按键都能正常绑定事件,唯独Enter键(return)绑定不了。点击ENTER键时,聚焦的控件会闪烁(其它按键不会),但是窗口对应的事件没有触发,请问该如何为ENTER键绑定事件呢?

xuchaoze commented 4 years ago

是什么控件绑定不了?AWTK上有的控件已经对enter键做了处理,比如edit控件,消息会停止向上传递。

zxc3489 commented 4 years ago

window控件绑定不了ENTER,我刚刚又测试了下,部分window可以响应ENTER事件,受影响的window布局为 window->list_view->scroll_view->list_item->(label/button/image),当list_item开启focusable属性时,ENTER按键不会传递给window,代码如下:

xxx xxx xxx

我使用nomal和focus两种style来调整聚焦时的控件背景色,但是目前这个list_item好像满足不了我的按键绑定需求,有什么办法能够解决吗(为什么开了foucus就不能传递ENTER按键了呢?关闭focus之后按键正常)? ps:使用image代替list_item,用select属性来控色可以达到同样的效果,并且能够正常传递ENTER按键事件。

xianjimli commented 4 years ago

list_item/button/image/tabbutton等控件,自动把return/space转成click事件,绑定click事件即可。

zxc3489 commented 4 years ago

绑定click效果也是一样的,事件传递不到window层,只需要把focusable="true" v-data:focused="{$selected==0}这段代码去掉,return事件就正常传递到window层.因为嵌入式设备上没有鼠标,所以也不能用over状态来表现控件被选择的那种状态

xuchaoze commented 4 years ago

更新一下mvvm,绑定key_up_before_children或者key_down_before_children试试。

zxc3489 commented 4 years ago

更新代码后解决,谢谢!