当我通过 MVVM模式将表单中的按钮按到另一个表单时,我想发送一个值。
这是XAML文件
<Button x:Name="myButton"
Text="RandomButton"
TextColor="#000000"
BackgroundColor="{x:Static local:FrontEndConstants.ButtonBackground}"
Grid.Row="2" Grid.Column="0"
Grid.ColumnSpan="3"
Command="{Binding NewPage}"
CommandParameter="100">
</Button>
这是我的ModelView class
,我将其重定向到另一种形式。
class JumpMVVM :INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private INavigation _navigation;
public ICommand NewPage
{
get
{
return new Command(async () =>
{
await _navigation.PushAsync(new Page2()); // HERE
});
}
}
public JumpMVVM() { }
public JumpMVVM(INavigation navigation)
{
_navigation = navigation;
}
跳跃工作。如何将“CommandParameter”发送到“Page2”?
谢谢, 德拉戈什
答案 0 :(得分:9)
最简单的方法是将值作为参数传递给Page2的构造函数。或者您可以在Page2上创建公共属性,并在创建后为其分配值。
await _navigation.PushAsync(new Page2(argument_goes_here)); // HERE
答案 1 :(得分:3)
使用SQLite存储对象并在新的ViewModel中实例化它,或使用Xamarin.Forms中内置的消息中心间接在ViewModel之间传递数据。
Jason的方法可行但是亲自将数据传递到视图,到另一个视图然后返回到视图模型不是我想要做的事情。
SQLite文档
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/databases/
消息中心文档
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/
答案 2 :(得分:0)
将参数传递给ViewModel并获取结果的好例子: How do I pass entry parameters to Xamarin MVVM viewmodel
从ViewModel导航到下一页(查看):
等待Xamarin.Forms.Application.Current.MainPage.Navigation.PushAsync(new MyView());