2013-11-24 30 views
0

我在Windows Store应用程序中使用自定义视图展示器。处理MvxViewModel ::使用自定义视图展示器时关闭

我显示SettingsFlyout并在其SettingsViewModel视图模型中我有一个命令绑定到需要隐藏弹出窗口(SettingsFlyout :: Hide())的弹出窗口上的按钮。

对于这一点,我有不同的选择:

  • 在SettingsFlyout

    ,我可以处理按钮点击

  • 在ICommand的视图模型,从视图模型发送消息在视图模型的ICommand中查看

  • ,请致电Close(this)

    我试图实现最后一个,在视图模型中使用Close(this)。

    为此,在自定义视图演示者中,我想要处理ChangePresentation(MvxPresentationHint hint)Close(IMvxViewModel viewModel)

    但我不明白如何获得视图实例对应的视图实例。

    在我的情况下,我有SettingsViewModel实例,我需要获取显示的SettingsFlyout的实例。

    有没有办法?

回答

1

这是一个自定义的演示文稿/导航,所以这是留给个人应用程序来实现的。

一些可能的思路是:

  • 演示者可以保持显示视图的列表(然后通过检查其ViewModel/DataContext财产得到他们的ViewModels) - 如果这样做,小心从删除每个视图这个列表,当他们关闭,否则这可能会导致可怕的内存泄漏。
  • SettingsFlyout类本身可能只是有一个Current静态成员 - 或者可以调用存储的Current(如果需要的话这可以archicted成一个更通用的解决方案 - 不仅仅是在SettingsFlyout)单独服务
  • 演示者可以检查并在VisualTree中搜索相应的视图以关闭
  • Closed机制可能是从SettingsFlyoutViewModel触发到SettingsFlyoutView的自定义事件或属性 - 而不是使用NavigationHint。
+0

谢谢。最后一个我也提到了它。忘了提及我已经考虑过的其他人。 #2看起来有点有趣。我所希望的是在Mvvmcross中找到一些神奇的内置功能,我不知道:)但是再次感谢 –

相关问题