我正在开发一个WinRT应用程序,现在它包含两个页面。在第一页中,用户单击一个按钮,指示他/她进入第二页,在那里他做出选择,需要将其传递回调用页面。如何将数据传回呼叫页面?
答案 0 :(得分:0)
使用ViewModel。查看Mvvm Light
(Nuget上提供)。使用双向绑定在ViewModel中设置数据,然后在返回到其他页面时,从同一ViewModel检索数据。还有很多guides for using Mvvm on Channel 9。
答案 1 :(得分:0)
有可能在使用Behaviors SDK(XAML)的页面之间导航,具体来说是使用Parameter的NavigateToPageAction。一些文章here
你可以参考它
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
以这种方式使用
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Click">
<core:NavigateToPageAction TargetPage="Presentation.Views.ArticleDetailView" Parameter="{Binding Id}"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
您可以添加此行为以控制某些事件(在本例中为Click事件),并将Id发送到第二页。在此页面中,您可以在后面的代码中处理此参数。它不是MVVM导向,但你可以尝试。您不必使用接口INavigateAble,您可以直接使用您的ViewModel。
private INavigateTo<int> NavigationViewModel()
{
return DataContext as INavigateTo<int>;
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var navigationViewModel = NavigationViewModel();
var parameter = e.Parameter as int?;
if (navigationViewModel != null && parameter != null)
{
navigationViewModel.SetParameter(parameter)
}
base.OnNavigatedTo(e);
}
但如果您只想发送数据而不想导航回第一页,则可以传递参数,例如一些Action回调方法,可以在第二页中调用,在第一页上设置一些值。