Как осуществлять поиск по id в паттерне mvvm?

248
23 мая 2017, 00:05

Здравствуйте, подскажите, пожалуйста, как осуществлять поиск не в Code Behind? есть таблица с книгами, пользователь вводит айди, и программа должна выводить данные о книге на экран. Как это сделать с помощью событий - понятно, а с помощью комманд? Не знаю как передать введённый айди в MainWindowViewModel.cs - класс, созданный для реализации логики MainWindow. В нем есть комманда Search, которая должна пробежаться по списку и найти книгу по айди. Через конструктор пробовала, так он же первым вызывается и выдает ошибки. Возможно, есть какой-то способ? Спасибо заранее.

public MainWindow()
{
    InitializeComponent();
    //Id = GetId();
    DataContext = new MainWindowViewModel();
}
public class MainWindowViewModel : BaseViewModel
{
    BooksEntities _conn = new BooksEntities();
    Window mv = new Window();
    private Book _currentBook;
    private ObservableCollection<Book> _books;
    private int _id;
    public Book CurrentBook
    {
        get { return _currentBook; }
        set { _currentBook = value; FirePropertyChanged(); }
    }
    public RelayCommand Save
    {
        get; set;
    }
    public RelayCommand Search
    {
        get; set;
    }
    public ObservableCollection<Book> Books
    {
        get { return _books; }
        set { _books = value; FirePropertyChanged(); }
    }
    public MainWindowViewModel()
    {
        Books = new ObservableCollection<Book>(_conn.Books);
        Search = new RelayCommand(SearchById);
        Save = new RelayCommand(Sauver);
    }
    private void SearchById()
    {
        _id = Convert.ToInt32((mv as MainWindow).IdSearchTextBox.Text);
        CurrentBook = new Book();
        foreach (Book b in Books)
        {
            if (b.Id == _id)
            {
                //CurrentBook.Id = b.Id;
                CurrentBook = new Book();
                CurrentBook.Auteur = b.Auteur;
                CurrentBook.Description = b.Description;
                CurrentBook.Nom = b.Nom;
                ((mv as MainWindow).GridBook.DataContext = CurrentBook;
            }
        }
    }
READ ALSO
Получение неправильного ответа

Получение неправильного ответа

Почему при вводе числа 2 в e_power_enter программа выводит в MessageBox ответ 19, а не 20? (enginepower типа float)

257
&#39;System.Data.Entity.Core.EntityCommandExecutionException&#39; occurred in mscorlib.dll. ASP.NET MVC 5

'System.Data.Entity.Core.EntityCommandExecutionException' occurred in mscorlib.dll. ASP.NET MVC 5

Скачал пример интернет-магагзина SportStore, который создан по книге ASPNET MVC 5 Freeman

301
Перенос строки в UrlEncode

Перенос строки в UrlEncode

Добрый вечерТакая проблема, есть документ который читаю построчно и заношу в массив

472
Как объединить две формы в программе?

Как объединить две формы в программе?

Form1 это сама программа, а Form2 это тоже самое что и Form1 только сама форма меньше и не имеет всех кнопок с Form1Это что-то вроде музыкального плеера,...

333