MVVM在2个不同页面之间传输

时间:2013-11-18 07:50:22

标签: c# wpf xaml

我有MainPaqe.csMainPaqe.xaml)和Periodic_Request.csPeriodic_Request.xaml),此外,Periodic_Request.xaml的{​​{1}}名称为TextBox名称为TxtBlock_numRequest的{​​{1}}和Combobox可能有3个选项。

问题在于如何在CmbBox_lvlPriority中获取用户从TextBoxCombobox编写的数字或字符串。按MainPaqe.cs后,我需要获取所有这些信息。

我完全不懂如何编写它并使用该模式,所以这就是我需要实际代码的原因

3 个答案:

答案 0 :(得分:3)

您可以尝试在QueryString中传递数据吗?查看this link了解样本

private void button_Click(object sender, RoutedEventArgs e)
{
    string uri = String.Format("/Periodic_Request.xaml?numRequest={0}", TxtBlock_numRequest.Text);
    NavigationService.Navigate(new Uri(uri, UriKind.Relative));
}

答案 1 :(得分:1)

如果我只需将一些需要传递到主页面的内容定义为App.xaml.cs文件中的静态属性,我通常会这样做

然后你可以做这样的事情;

MainPage_OnNavigatedTo(object sender, Eventargs args)
{
    if(App.YourProperty != null)
    {
         _viewmodel.RefreshValueForFoo(App.YourProperty);
    }
}

这不是最好的解决方案,但只有少数几个需要传递的值才能完成工作

答案 2 :(得分:1)

您既可以发送像miguel建议的查询字符串,也可以使用静态属性,但两者都不太好。 (为什么我需要一个每个人都可以看到的属性?或者为什么我必须创建一个查询字符串。)

使用WPF时的解决方案通常适合使用MVVM模式,反过来,使用messenger类发送消息。你可以发送你想要的任何消息,无论是谁应该收听它,都会收到它(一旦他注册了那种类型的消息)。

我对MVVM-Light实现非常满意。

以下是有关如何使用信使的一般示例:http://jesseliberty.com/2011/01/06/windows-phone-from-scratch%E2%80%93mvvm-light-toolkit-soup-to-nuts-3/