2015-12-17 4 views
0

Я борюсь с этой проблемой: у меня есть база данных MySql, которую я показываю в виде списка. Вот мой код:Изменить данные в списке и сохранить их в базе данных?

<ListView Name="personsListViewSearch" HorizontalAlignment="Left" Height="234" VerticalAlignment="Top" Width="592" Margin="10,105,-10,-31"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="ID" Width="25" DisplayMemberBinding="{Binding IDPerson}" /> 
      <GridViewColumn Header="Name:" Width="100" DisplayMemberBinding="{Binding Name}" /> 
      <GridViewColumn Header="Surname" Width="160" DisplayMemberBinding="{Binding LastName}" /> 
      <GridViewColumn Header="Phone" Width="150" DisplayMemberBinding="{Binding Phone}" /> 
      <GridViewColumn Header="Email" Width="125" DisplayMemberBinding="{Binding Email}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

Я также создал код C# для вставки, удаления и поиска, но это не то, что я ищу. Я хочу иметь возможность (во время выполнения, когда у меня есть список), щелкните или дважды щелкните имя человека, отредактируйте имя и после нажатия enter сохраните его автоматически в базе данных. Любая идея, как это сделать?

+0

вы можете использовать свойство изменилось и сохранить в DB на событие изменения свойства –

+0

, как именно я это сделал? –

ответ

0

Именно то, что сказал @jophy job. Используйте событие изменения свойства. Что-то вроде этого:

public class Data : INotifyPropertyChanged 
{ 
    // boiler-plate 
    public event PropertyChangedEventHandler PropertyChanged; 
    protected virtual void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 
    protected bool SetField<T>(ref T field, T value, string propertyName) 
    { 
     if (EqualityComparer<T>.Default.Equals(field, value)) return false; 
     field = value; 
     OnPropertyChanged(propertyName); 
     return true; 
    } 

    // props 
    private string name; 
    public string Name 
    { 
     get { return name; } 
     set { SetField(ref name, value, "Name"); } 
    } 
} 

Тогда есть каждое свойство так:

protected void OnPropertyChanged([CallerMemberName] string propertyName = null) 
{ 
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
} 

Этот вопрос также приведет вас в правильном направлении:

Implementing INotifyPropertyChanged - does a better way exist?

Смежные вопросы