编辑listview中的数据并将其保存到数据库中?

时间:2015-12-17 18:59:36

标签: c# wpf

我正在努力解决这个问题:我有一个MySql数据库,我在listview中显示。这是我的代码:

<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#代码,但这不是我要找的。我希望能够(在运行时,一旦我有listview)点击或双击一个人的名字,编辑名称,然后按Enter键,将其自动保存到数据库。知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

正是@jophy工作所说的。使用属性更改事件。像这样:

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?

相关问题