CommunityToolkit.MVVM 命名空间'namespace'已经包含'type'的定义



我想在。net MAUI中使用MVVM,我从CommunityToolkit.MVVM开始。

我创建了一个视图模型,并得到以下错误:

The namespace 'MyApp.ViewModels' already contains a definition for 'ProfilePopupViewModel '

下面是视图模型:

public class ProfilePopupViewModel : ObservableRecipient
{
private Profile Profile;
[ObservableProperty]
private string id;
[ObservableProperty]
private string name;
[ObservableProperty]
private DateOnly birthDate;
[ObservableProperty]
private int work;
}

谢谢!

马库斯

你的字体需要是局部的:

public partial class ProfilePopupViewModel : ObservableRecipient
{
[ObservableProperty]
private string id;
// ...
}

MVVM工具包包含一个源生成器。这是通过拾取您添加的那些ObservableProperty属性,并生成添加到编译中的c#代码来工作的。

对于您的类,它将生成另一个部分类,其中包含与您的[ObservableProperty]字段对应的属性。比如:

partial class ProfilePopupViewModel
{
public string Id
{
get => id;
set
{
if (id != value)
{
id = value;
OnPropertyChanged("Id");
}
}
}
// ...
}

为了编译它,您的ProfilePopupViewModel还需要标记为partial

这似乎是。net 6.0.302和源代码生成器(如Toolkit中的on)的已知错误。MVVM(见https://github.com/dotnet/wpf/issues/6792)

相关内容

最新更新