Установить список <Object>для модели с использованием MVVM - PullRequest
0 голосов
/ 06 марта 2020

Мне нужна помощь с моим C# кодом, использующим шаблон MVVM.

У меня есть класс со ссылкой на список другого класса (для лучшего понимания я переименовал свои поля):

class Class1
{
    /* ... */
    public string myString { get; set; }
    public List<OtherClass> otherclass { get; set; }
}

Класс здесь с именем "otherclass" выглядит следующим образом:

class OtherClass
{
    public OtherClass(string str1, string str2, string str3)
    {
        Str1 = str1;
        Str2 = str2;
        Str3 = str3;
    }

    public string Str1 { get; set; }
    public string Str2 { get; set; }
    public string Str3 { get; set; }
}

Наконец, у меня есть ViewModel:

class MyViewModel :  INotifyPropertyChanged
{
    private readonly Class1 class1;

    /* ... */
    public string myString
    {
        get { return class1.MyString; }
        set
        {
            class1.MyString = value;
            OnPropertyChange("MyString");
        }
    }

    // Issue here
    // private List<OtherClass> _mylist = new List<OtherClass>;
    public List<OtherClass> OtherClass
    {
        get { return class1.OtherClass; }
        set
        {
            // class1.OtherClass.Add(value);
            class1.OtherClass = value;
            OnPropertyChange("OtherClass");
        }
    }

    /* ... */
}

Когда мне нужно заполнить мой модель, которую я просто делаю, например (в моем коде):

myViewModel.myString = myvalue;

Теперь в моем коде у меня есть список с исправленными значениями:

myList = new OtherClass(value1, value2, value3) ,

Когда я хочу добавить этот список объектов в мою модель, моя модель останется нулевой для этой записи:

myViewModel.OtherClass = myList or myViewModel.OtherClass.Add(myList)

Я, безусловно, что-то не так делаю. .. Если кто-то может мне помочь, пожалуйста?

1 Ответ

2 голосов
/ 06 марта 2020

Я не вижу кода, в котором инициализирован ваш список, попробуйте изменить Class1:

public List<OtherClass> otherclass  { get; set; }= new List<OtherClass>();

или добавить конструктор по умолчанию в Class1, где инициализируется List. Пока он не инициализирован, невозможно добавить элементы в List

public Class1()
{
  this.otherclass = new List<OtherClass>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...