已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
上个月关门了。
Improve this question
我想改变模型。街道和模型的其他属性,我所尝试的一切似乎太长,不正确或太复杂。我不想听起来很懒,但这就是我习惯的方式。
1.例如
我试过这个,但感觉就像我只是再次编写模型
public class CustomerInfoViewModel : BaseViewModel
{
public CustomerInfo Model { get; set; }
public CustomerInfoViewModel()
{
Model = new CustomerInfo();
}
public CustomerInfoViewModel(CustomerInfo customerInfo)
{
Model = customerInfo;
}
public string Street
{
get
{
return Model.Street;
}
set
{
Model.Street = value;
OnPropertyChanged();
}
}
}
1.例如
我也发现了这样的东西,但然后总是添加一个字段,这似乎也是错误的。
public class CustomerInfoViewModel : BaseViewModel
{
public CustomerInfo Model { get; set; }
public CustomerInfoViewModel()
{
Model = new CustomerInfo();
}
public CustomerInfoViewModel(CustomerInfo customerInfo)
{
Model = customerInfo;
}
// Create a generic field setter method
private void SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
OnPropertyChanged(propertyName);
}
}
private string _street;
public string Street
{
get => _street;
set => SetField(ref _street, value);
}
// Add other fields and properties using the same pattern
}
我对MVVM有什么错误吗?或者这是一个好的/好的方法,有更好的解决方案吗?
1条答案
按热度按时间wa7juj8i1#
MVVM有多种方法。纯粹主义者谴责绑定到模型是一种打破模式的做法。就我个人而言,我倾向于有一个单一的模型/vm类,当我还不确定我是否需要一个单独的视图模型对应。一旦我需要添加一些计算属性,或者在模型数据上添加一些客户端数据整形,我就切换到专用的ViewModel。在我看来,超严格的MVVM可能会导致一些显著的开销,所以我建议不要成为模式的奴隶,而是选择适合您的部分。