我尝试参考社区工具包 mvvm 来使用 [ObservableProperty]。
我刚刚使用标准模板(Nice racing car)从头开始创建了一个新的 Maui APP 项目,并且它可以工作。 我已经安装了 Communitytoolkit mvvm 和 Maui :
但是当我添加这样的类时,它会显示 “CS0246 - 找不到类型或命名空间名称“ObservableObject”(您是否缺少 using 指令或程序集引用?) BelWriting (net8.0-ios) 、BelWriting (net8.0-maccatalyst)、BelWriting (net8.0-windows10.0.19041.0)"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm;
namespace BelWriting.ViewModels
{
public partial class MainPageVM : ObservableObject
{
[ObservableProperty]
private int _id;
[ObservableProperty]
private string _name;
[ObservableProperty]
private string _description;
[ICommand]
public async void Save()
{
await Application.Current.MainPage.DisplayAlert("MAUI MVVM Sample", "Item Saved Successfully", "OK");
}
}
}
我尝试在 Windows 机器上运行它:
这是我的 csproj 文件的内容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>
<WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">11.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">21.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
</PropertyGroup>
我错过了什么?!? 问题是否来自目标框架以及如何解决?
根据文档,ObservableObject位于
Microsoft.Toolkit.Mvvm.ComponentModel
命名空间中,因此您需要为该命名空间添加using
语句
请注意,如果右键单击错误,Visual Studio 会向您建议常见的解决方案,包括修复丢失的 using 指令