我想在。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)