WinRT从页面返回数据

时间:2014-06-12 15:54:20

标签: windows-runtime

我正在开发一个WinRT应用程序,现在它包含两个页面。在第一页中,用户单击一个按钮,指示他/她进入第二页,在那里他做出选择,需要将其传递回调用页面。如何将数据传回呼叫页面?

2 个答案:

答案 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回调方法,可以在第二页中调用,在第一页上设置一些值。