如何处理视图模型属性的绑定内部数据?

How to handle binding inner data of the view models' properties?

假设我有这样的视图模型:

public class AddItemViewModel : BaseViewModel //MVVMLight
 {
    ImageData _image1;
    public ImageData Image1
    {
        get { return _image1; }
        set { Set(ref _image1, value); }
    }
 }

并且 ImageData 有一个 属性 IsDefault 我需要将其绑定(双向绑定)到复选框控件的 IsChecked 属性 .. 什么是 MVVM 解决方案? ImageData 模型是否需要通过继承自 BaseViewModel 转换为视图模型?

目前我正在添加一个新的 属性 来处理 AddItemViewModel 中的所有 4 张图像:

    private bool _isDefault;
    public bool IsDefault
    {
        get { return _isDefault; }
        set { Set(ref _isDefault, value); }
    }

但这看起来很笨拙!

通常的解决方案是为 ImageData (ImageDataViewModel) 创建一个视图模型并将您的 IsDefault 属性 放在那里:

public class ImageDataViewModel : ViewModelBase
{
    public EventHandler<bool> OnChanging;

    public ImageData Data { get; private set; }

    public ImageDataViewModel(ImageData data)
    {
        this.Data = data;
    }

    private bool _isDefault;
    public bool IsDefault
    {
        get { return _isDefault; }
        set
        {
            if (value != this._isDefault)
                OnChanging?.Invoke(this, value);
            Set(ref _isDefault, value);
        }
    }
}

然后,当父视图模型创建这些子视图模型时,它会订阅 OnChanging 事件,以便它可以禁用所有发送者的兄弟姐妹的复选框。