我在Windows应用商店应用中使用自定义视图展示器。
我显示了一个SettingsFlyout,在其SettingsViewModel视图模型中,我有一个命令绑定到弹出窗口上的按钮,需要隐藏弹出按钮(SettingsFlyout :: Hide())。
为此,我有不同的选择:
,我可以点击按钮
在视图模型的ICommand中,从视图模型发送消息到视图
在视图模型的ICommand中,调用Close(this)
。
我试图在视图模型中使用Close(this)来实现最后一个。
为此,我在自定义视图演示者中考虑处理ChangePresentation(MvxPresentationHint hint)
或Close(IMvxViewModel viewModel)
。
但是我没有看到如何获得与视图模型实例相对应的视图实例。
在我的情况下,我有SettingsViewModel实例,我需要获取显示的SettingsFlyout的实例。
有办法吗?
答案 0 :(得分:1)
这是一个自定义的演示文稿/导航,因此可供个人应用程序使用。
一些可能的想法是:
ViewModel
/ DataContext
属性来获取他们的ViewModel) - 如果这样做,请小心从这个列表中删除每个View否则会导致可怕的内存泄漏。SettingsFlyout
类本身只能拥有Current
静态成员 - 或者可以调用存储Current
的单例服务(如果需要,可以将其存档为更通用的解决方案 - 超出了SettingsFlyout)Closed
机制可以是从您的SettingsFlyoutViewModel触发到您的SettingsFlyoutView的自定义事件或属性 - 而不是使用NavigationHint。