我遇到此错误:
IMvxViewModel
不包含针对PropertyChanged
并且没有扩展方法PropertyChanged
接受 可以找到类型IMvxViewModel
的第一个参数(您是否缺少 使用指令还是程序集引用?)
这是我的代码:
[MvxMasterDetailPagePresentation(Position = MasterDetailPosition.Master, WrapInNavigationPage = false, NoHistory = true)]
public partial class MixedNavMasterDetailPage : MvxContentPage
{
public MixedNavMasterDetailPage()
{
InitializeComponent();
}
protected override void OnViewModelSet()
{
base.OnViewModelSet();
ViewModel.PropertyChanged += (sender, e) =>
{
if (e.PropertyName == nameof(ViewModel.SelectedMenu))
{
if (Parent is MasterDetailPage master)
{
master.IsPresented = !master.IsPresented;
}
}
};
}
}
答案 0 :(得分:0)
根据该接口的源代码,该错误是准确的
https://github.com/MvvmCross/MvvmCross/blob/master/MvvmCross/ViewModels/IMvxViewModel.cs
但是,如果您创建了一个自定义视图模型,该模型扩展了框架提供的默认模型并从INotifyPropertyChanged
派生,那么您需要先检查然后将视图模型转换为所需的类型,然后才能使用了所需的成员,
protected override void OnViewModelSet() {
base.OnViewModelSet();
var viewModel = ViewModel as INotifyPropertyChanged;
if(viewModel != null) {
viewModel.PropertyChanged += (sender, e) => {
if (e.PropertyName == "SelectedMenu") {
if (Parent is MasterDetailPage master) {
master.IsPresented = !master.IsPresented;
}
}
};
}
}