Как связать наблюдаемую коллекцию и сохранить в базе данных - PullRequest
1 голос
/ 02 февраля 2012

Я скоро буду заниматься проектом MVVM, и я разрабатываю пару уроков / примеров. Как мне взять следующий код и подключить его к базе данных. Если бы у меня была сетка данных, как я могу изменить информацию в сетке данных и автоматически обновлять ее? Я буду использовать MS SQL. Спасибо за любые советы.

Class Person 

  Property _name As Integer
Property Name As Integer
    Get
        Return _name
    End Get
    Set(value As Integer)
        _name = value
        RaisePropertyChanged("Name")

    End Set
End Property
End class

Тогда в другом классе:

Class Collections

Public namelist As New ObservableCollection(Of Person)

    namelist.Add(New Person With {.Name = Nothing}) 

--- Тогда в XAML

    <ObjectDataProvider x:Key="test" ObjectType="{x:Type local:Collections}"

     <DataGrid ItemsSource="{Binding Source= {StaticResource test}}">

      <DataGridTextColumn Header="Name" Binding="{Binding Sample, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

  ect...ect....ect...

Теперь, где или как мне подключить свою таблицу MS SQL ко всему этому?

1 Ответ

2 голосов
/ 02 февраля 2012

Если вы используете MVVM, то ваши привязки (если они правильно подключены) будут распространять изменения, сделанные вами в GridView, на свойства, которые они также привязывают, если вы связываете события после завершения редактирования ячейки и т. Д.

Вот источник на этом:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=563

Я исхожу из фона только на C #, но, например,

, если у вас есть свойство наблюдаемогоcollection:

 public ObservableCollection<string> Collection {get; set;}

в ViewModel, если вы связали свое представление (.xaml) с виртуальной машиной, установив DataContext для представления, и связали этот OC с комбинированным списком, изменяя selectedValue накомбинированный список обновит значение SelectedValue, к которому вы привязаны в .xaml.

Поэтому, если вы выбрали для этого поля со списком привязку к SelectedValue, к свойству:

 public string SelectedValue {get; set;}

при выборе одноговыбор в выпадающем списке обновит это значение в модели представления и перейдет в заданную часть свойства.

То же самое относится ко всему, что вы привязали к GridView.Если у вас есть ObservableCollection, которую также привязывает ваше сеточное представление, вам нужно подключить события в представлении, чтобы, когда вы чувствуете, что изменение должно обновить ViewModel и использовать ICommand для распространения изменения на ВМ.

Еще один вопрос: вы должны использовать VB?Я знаю фреймворки, которые делают MVVM проще, например Caliburn.Micro, в C #, должны быть какие-то фреймворки, чтобы сделать MVVM проще с VB.Несмотря на то, что вы пытаетесь настроить базовый MVVM, его будет не так сложно настроить, но эти фреймворки обычно экономят ваше время, связывая привязки вручную.

...