c# - 无法解决错误“IMvxViewModel”不包含“PropertyChanged”的定义)
问题描述
我正面临这个错误:
IMvxViewModel
不包含 for 的定义, 也找不到接受第一个类型参数的PropertyChanged
扩展方法(您是否缺少 using 指令或程序集引用?)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;
}
}
};
}
}
解决方案
根据该接口的源代码,该错误是准确的
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;
}
}
};
}
}
推荐阅读
- c# - 可以在 Visual Studio 控制台/Windows 应用程序中安装和使用实体框架
- visual-studio - 请求中止:无法在 VS 2019 中为“https://api.nuget.org/v3/index.json”创建 SSL/TLS 安全通道
- regex - 将vim中的十进制数乘以固定数量
- javascript - 弹窗第二次未触发
- node.js - 在嵌套数组中比较并添加两个数组
- rust - 如何从迭代器循环内部跳过 n 个项目?
- python - 如何使用 pandas 数据框的特定行和列创建新系列?
- r - 我正在研究 sparklyr。试图将我的数据写入postgresql,但它需要永远
- shopify - 如何在shopify中提高网站加载速度
- netsuite - 如何在套件表单(API 2.0)的选择字段中仅获取父项?