Как обновить интерфейс, используя привязки - PullRequest
0 голосов
/ 10 января 2012

У меня есть DataGrid и два ListBox в моем окне.Я использую Entity Framework для подключения к моему SQL Server.В зависимости от выбора, который я делаю в ListBoxes, параметры будут переданы моей хранимой процедуре, и будут получены данные для моей DataGrid.Мне удалось реализовать эту функциональность без использования MVVM.Я хотел бы знать способы реализовать это с помощью MVVM.Пожалуйста, помогите мне.Заранее спасибо.

1 Ответ

4 голосов
/ 10 января 2012

Прежде всего, MVVM - это разделение проблем вашего кода в соответствующей области. Например, общение с вашей базой данных через EF должно быть сделано в модели 1 . ViewModel отвечает за хранение данных, а также за их формирование или массирование, чтобы сделать их более подходящими для отображения (т.е. преобразование перечислений в цвета 2 и т. Д.).

Чтобы реализовать ваши функциональные возможности в MVVM-формате, вам нужно будет использовать привязку и привязать вашу модель представления к вашему представлению:

<MyControl>
    <LayoutRoot>
        <ListBox ItemsSource={Binding MyItems} SelectedItem={Binding MySelection} />
    </LayoutRoot>
</MyControl>

в коде для просмотра:

public class MyControl
{
    public MyControl()
    {
        this.DataContext = new MyViewModel();
    }
}

и ваша ViewModel будет выглядеть примерно так:

public class MyViewModel : INotifyPropertyChanged
{
    public ObservableCollection<MyDataObject> MyItems 
    { 
        get { return _myItems; }
        set
        {
            _myItems = value;
            OnPropertyChanged("MyItems");
        } 
    }

    public MyDataObject MySelection { get; set; }

    public void DoSomethingWithDatabase()
    {
        Model.DoSomething(MySelection);
    }
}

Это просто ОЧЕНЬ простой пример, чтобы проиллюстрировать, что требуется, если вы делаете вещи способом MVVM (и я намеренно пропустил кучу вещей). Чтобы сделать правильный пример и задокументировать все необходимые элементы, которые вам нужно знать, потребуется по крайней мере глава в книге, поэтому я отошлю вас к статье MSDN для дальнейшего чтения: Реализация представления модели -Model Pattern .



1 И Модель может быть просто ступенькой, если вы также внедрите SOA, Модель может просто вызвать сервис, который затем обращается к базе данных.
2 Это также можно сделать с помощью преобразователей в представлении, но это не всегда возможно и практически невозможно в преобразователе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...