У меня есть тестовое WPF
приложение, использующее Caliburn.Micro
. Я пытаюсь построить с DataGrid
, который можно редактировать. Данные обновят базу данных при обновлении cell
/ row
.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда происходит событие RowEditEnding
. Он передает информацию в строке до ее редактирования. Мне интересно, как я могу получить обновленную информацию, передаваемую функции.
Любая помощь будет оценена. Соответствующий код ниже:
Просмотр:
<DataGrid x:Name="People"
AutoGenerateColumns="False"
CanUserReorderColumns="True"
CanUserAddRows="True"
AlternatingRowBackground="#dfdfdf"
cal:Message.Attach="[Event RowEditEnding] = [Action SavePeopleEdit($this)]">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding FirstName}">
<DataGridTextColumn.Header>
<TextBlock Text="First"
ToolTip="This Persons First Name" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding LastName}">
<DataGridTextColumn.Header>
<TextBlock Text="Last"
ToolTip="This Persons Last Name" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding pNumber}">
<DataGridTextColumn.Header>
<TextBlock Text="Person Number"
ToolTip="This Persons pNumber" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
ViewModel:
using Caliburn.Micro;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Windows;
using System.Windows.Controls;
namespace SqliteEncryptionTest.ViewModels
{
public class ShellViewModel : Screen
{
public IObservableCollection<PersonModel> _people;
public IObservableCollection<PersonModel> People {
get { return _people; }
set {
_people = value;
NotifyOfPropertyChange(() => People);
}
}
public void SavePeopleEdit(object sender)
{
if (People != null)
{
MessageBox.Show(People[3].LastName.ToString());
}
}
public ShellViewModel()
{
LoadPeopleList();
}
private void LoadPeopleList()
{
People = new BindableCollection<PersonModel>(SqliteDataAccess.LoadPeople());
}
}
}
Я изменил LastName на «Четыре», но он по-прежнему показывает значение «4».