使用自定义视图演示者时处理MvxViewModel :: Close

时间:2013-11-24 10:12:40

标签: mvvmcross

我在Windows应用商店应用中使用自定义视图展示器。

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

为此,我有不同的选择:

    在SettingsFlyout中
  • ,我可以点击按钮

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

  • 在视图模型的ICommand中,调用Close(this)

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

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

    但是我没有看到如何获得与视图模型实例相对应的视图实例。

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

    有办法吗?

1 个答案:

答案 0 :(得分:1)

这是一个自定义的演示文稿/导航,因此可供个人应用程序使用。

一些可能的想法是:

  • Presenter可以保留显示的视图列表(然后通过检查他们的ViewModel / DataContext属性来获取他们的ViewModel) - 如果这样做,请小心从这个列表中删除每个View否则会导致可怕的内存泄漏。
  • SettingsFlyout类本身只能拥有Current静态成员 - 或者可以调用存储Current的单例服务(如果需要,可以将其存档为更通用的解决方案 - 超出了SettingsFlyout)
  • Presenter可以检查并搜索VisualTree以获取相应的视图以关闭
  • Closed机制可以是从您的SettingsFlyoutViewModel触发到您的SettingsFlyoutView的自定义事件或属性 - 而不是使用NavigationHint。
相关问题