我正在使用MVVM,而我正试图根据显示的内容动态设置页面标题。当我尝试将标题更改为固定字符串时,它可以工作:
<?page title="My title"?>
但是,如果我尝试将其更改为viewmodel中的值,则会失败(标题为空):
<?page title=${vm.titleProperty} ?>
我还尝试使用@init
进行数据绑定:
<?page title=@init(vm.titleProperty) ?>
答案 0 :(得分:2)
我找到了解决方案。在viewmodel(java)中,您可以使用此代码来设置页面标题:
Executions.getCurrent().getDesktop().getFirstPage().setTitle("Dynamic title");
答案 1 :(得分:1)
这样可行,你可以考虑所有这些方法来访问VM中的页面对象:
@Command
myCommand(@ContextParam(ContextType.PAGE) Page page){...
或
Executions.getCurrent().getDesktop().getFirstPage()
或
myCommand(@ContextParam(ContextType.DESKTOP) Desktop desktop )
...
desktop.getFirstPage()
所有这些都可以让您访问虚拟机中的页面。
或者更好的是,您可以注册客户端命令,并在触发客户端命令时在客户端上执行页面更改。这稍微复杂一些,但是遵循mvvm模式会更好,因为视图与VM完全分离。这里的例子: http://zkfiddle.org/sample/3nmad2u/2-page-title-mvvm