使用Xamarin Forms& PCL
我看到了很多关于在Page.Xaml中将VM与View绑定的示例和片段
使用此块
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
如果我想在页面代码(Page.cs)中绑定视图模型该怎么办。
答案 0 :(得分:3)
您可以通过对绑定上下文进行类型转换来从后面的代码访问ViewMode
var pageViewModel = (PageViewModel)this.BindingContext;
它对我有用。
答案 1 :(得分:2)
那种情况你必须在实例化的类上传递both参数,因为你在构造函数中需要两个参数。尝试下面的代码。
public Page()
{
InitializeComponent();
this.BindingContext = new PageViewModel(Navigation,PageDialogService);
}
答案 2 :(得分:0)
您只需修改viewmodel并将其设置为BindingContext。
public Page()
{
InitializeComponent();
this.BindingContext = new MyViewModel();
}
==== EDITED ====
如果您的viewmodel带有需要依赖注入的参数,并且您想要正确解析它。
App.xaml.cs
protected override void OnInitialized()
{
...
Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType<IMyViewModel, MyViewModel);
...
}
Page.xaml.cs
public Page()
{
InitializeComponent();
var viewModel = Microsoft.Practices.Unity.UnityContainerExtensions.Resolve<IMyViewModel>(((App)Application.Current).Container);
this.BindingContext = viewModel;
}
答案 3 :(得分:0)
就我而言
我从page.xaml
中删除了 xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
并在代码Behind(page.cs)
内我添加了
public Page()
{
InitializeComponent();
this.BindingContext = new pageViewModel(null,null);
}
它对我有用