当从主页视图中的菜单项触发事件时,如何在实际着陆页的视图模型中引发事件?
How raise an event in the viewmodel of the actual landing page, when it is triggered from a menu item in the view of the main page?
在主页面和登录页面这两个视图模型中,有相同的方法称为 'SaveEntry'。如果单击菜单项,在主页视图中实现,在主页处于活动状态的情况下,必须执行主视图模型中的方法 'SaveEntry'。
在另一种情况下,当着陆页处于活动状态并且我单击主视图中的菜单项时,必须执行视图模型着陆页中的方法 'SaveEntry'。
从主页到着陆页的导航是通过路由事件实现的:
MainContentFrame.NavigateToType(typeof(WriteEntryPage), null, navOptions);
我该如何实现?
根据您的要求,您可以使用 NavigationView
作为导航来处理页面导航,将加载的事件与命令绑定,然后在加载页面时在视图模型中执行 SaveEntry
。
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Loaded">
<core:InvokeCommandAction Command="{x:Bind ViewModel.ViewLoadedCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
ViewModel
public class MainViewModel : ViewModelBase
{
public RelayCommand ViewLoadedCommand { get; private set; }
public MainViewModel()
{
ViewLoadedCommand = new RelayCommand(SaveEntry);
}
private void SaveEntry()
{
// save entry.
}
}
我已经上传code sample请参考
在主页面和登录页面这两个视图模型中,有相同的方法称为 'SaveEntry'。如果单击菜单项,在主页视图中实现,在主页处于活动状态的情况下,必须执行主视图模型中的方法 'SaveEntry'。 在另一种情况下,当着陆页处于活动状态并且我单击主视图中的菜单项时,必须执行视图模型着陆页中的方法 'SaveEntry'。
从主页到着陆页的导航是通过路由事件实现的:
MainContentFrame.NavigateToType(typeof(WriteEntryPage), null, navOptions);
我该如何实现?
根据您的要求,您可以使用 NavigationView
作为导航来处理页面导航,将加载的事件与命令绑定,然后在加载页面时在视图模型中执行 SaveEntry
。
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Loaded">
<core:InvokeCommandAction Command="{x:Bind ViewModel.ViewLoadedCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
ViewModel
public class MainViewModel : ViewModelBase
{
public RelayCommand ViewLoadedCommand { get; private set; }
public MainViewModel()
{
ViewLoadedCommand = new RelayCommand(SaveEntry);
}
private void SaveEntry()
{
// save entry.
}
}
我已经上传code sample请参考