Как обрабатывать привязку внутренних данных свойств моделей представлений? - PullRequest
0 голосов
/ 27 декабря 2018

Предполагая, что у меня есть модель вида, подобная этой:

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); }
    }

но это выглядит неуклюже!

1 Ответ

0 голосов
/ 28 декабря 2018

Обычное решение - создать модель представления для 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, так что он может отключить флажки для всех братьев и сестер отправителя.

...