WPF Editable DataGrid, такие как MS Access и MVVM - PullRequest
1 голос
/ 18 июля 2011

Я работаю над проектом, в котором реализовал MVVM для настольного приложения WPF.У меня возникла ситуация, когда я хотел сделать Datagrid редактируемым, как старый список таблиц MS Access.Я связываю Источники данных Datagrid с ObservableCollection, где Member реализует INPC.Теперь я хочу разрешить пользователям обновлять элементы, щелкая любую ячейку столбца, когда они переходят к другой строке или потеряли фокус, данные должны быть проверены и затем сохранены в БД.

Как записать такие события в моей ViewModel и как мне добиться этой простой функциональности?

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Я бы использовал Linq to Sql и привязал бы DataSource DataSrid непосредственно к таблице, которую вы хотите.Это будет обрабатывать все отслеживание изменений для вас, а также будет сохранять в базе данных, когда вы просто вызываете SubmitChanges (что вы можете делать при изменении selectedItem, см. Ответ slugster).

0 голосов
/ 18 июля 2011

Вы можете запустить действия «сохранить», привязав SelectedItem сетки к свойству вашей модели представления, и в установщике свойства вы можете сохранить ранее выбранный элемент, прежде чем заменить его новым выбранным элементом, вкратцепсевдокод это выглядело бы примерно так:

public MyDataObject SelectedItem
{
    get { return _selectedItem; }
    set 
    {
        if (value != _selectedItem)
        {
            SaveMyItem(_selectedItem);
            _selectedItem = value;
            OnPropertyChanged("SelectedItem");
        }
    }
}

private MyDataObject _selectedItem;
<DataGrid ItemsSource="{Binding MyCollection}" SelectedItem="{Binding SelectedItem, UpdateSourceTrigger=PropertyChanged}" ...etc... />

Конечно, вам, возможно, придется немного подстроить этот подход - если для сохранения измененного элемента потребуется значительное количество времени, вам понадобитсясделать это в фоновом потоке.Если вы укажете проверку как часть привязок столбцов в сетке, пользователь не сможет выбирать и редактировать новую строку, пока данные не будут правильно проверены.

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