我正在努力解决这个问题:我有一个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键,将其自动保存到数据库。知道怎么做吗?
答案 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?