wpf MVVM中ViewModel到Model的通信是如何工作的?[已关闭]

jbose2ul  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(96)

已关闭,此问题为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有什么错误吗?或者这是一个好的/好的方法,有更好的解决方案吗?

wa7juj8i

wa7juj8i1#

MVVM有多种方法。纯粹主义者谴责绑定到模型是一种打破模式的做法。就我个人而言,我倾向于有一个单一的模型/vm类,当我还不确定我是否需要一个单独的视图模型对应。一旦我需要添加一些计算属性,或者在模型数据上添加一些客户端数据整形,我就切换到专用的ViewModel。在我看来,超严格的MVVM可能会导致一些显著的开销,所以我建议不要成为模式的奴隶,而是选择适合您的部分。

相关问题