ObservableCollection внутри ObservableCollection, введите новый элемент в существующую ObservableCollection.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ObservableCollection внутри ObservableCollection, введите новый элемент в существующую ObservableCollection.

Сообщение Anonymous »

У меня есть 2 класса «Патент» и «Автор» в модели. Класс Patent имеет наблюдаемую коллекцию PatentAuthors, в которой хранятся все авторы патентов, которых может быть несколько.

Код: Выделить всё

public class Patent
{
public int Id {get; set;}
public string Number {get; set;}
public string Name {get; set;}
public ObservableCollection PatentAuthors {get; set;}
public string Description {get; set;}

public Patent()
{

}
}

Код: Выделить всё

public class Author
{
public int Id {get; set;}
public string FullName {get; set;}
public string Adres {get; set;}
public string PhoneNumber {get; set;}

public Author()
{

}
}
Также в модели у меня есть класс PatentManager, в котором я создаю наблюдаемую коллекцию патентов и храню внутри нее все патенты и наблюдаемую коллекцию авторов.

Код: Выделить всё

public static ObservableCollection
 _DataBasePatent = new()
{

}

public static ObservableCollection GetPatents()
{
return _DataBasePatent;
}

public static void AddPatent(Patent patent)
{
_DataBasePatent.Add(patent);
}
В ViewModel у меня есть класс AddPatentViewModel, у которого есть команда для добавления нового патента и только 1 автор патента в наблюдаемую коллекцию _DataBasePatent, эта команда привязана к кнопке.

Код: Выделить всё

public class AddPatentViewModel
{
public ICommand AddPatentCommand {get;set;}
public string AddNumber {get;set;}
public string AddName {get;set;}
public string AuthorFullName {get;set;}

public AddPatentViewModel()
{
AddPatentCommand = new RelayCommand(AddPatent, canAddPatent);
{

public bool canAddPatent(object obj)
{
return true;
}

public void AddPatent(object obj)
{
PatentManager.AddPatent(new()
{
Number = AddNumber,
Name = AddName,
PatentAuthors = new ()
{
FullName = AuthorFullName
}
});
}
}
Итак, мой вопрос: что, если я захочу добавить нового автора к существующему патенту? Также у меня есть метод SelectedPatent в ViewModelBase, который возвращает значение выбранного патента в источнике элементов списка, это помогает мне просмотреть всю информацию о выбранном патенте.
Я попытался написать новый класс AddAuthorToOldPatent с помощью команды AddNewAuthorToOldPatentCommand

Код: Выделить всё

public class AddPatentViewModel : ViewModelBase
{
public ICommand AddNewAuthorToOldPatentCommand {get;set;}
public string AuthorFullName {get;set;}

public AddPatentViewModel()
{
AddNewAuthorToOldPatentCommand= new RelayCommand(AddNewAuthorToOldPatent, canAddNewAuthorToOldPatent);
{

public bool canAddNewAuthorToOldPatent(object obj)
{
return true;
}

public void AddNewAuthorToOldPatent(object obj)
{
Patent patent = new Patent();
var found = patent.FirstOrDefault(SelectedPatent);
found.PatentAuthors.Add(new(){FullName = AuthorFullName});

}
}
Но это не работает. Я новичок в C# и шаблонах mvvm.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-existi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»