我有一个ComboBox,其ItemSource绑定到名为PersonsList的Person类型的ObservableCollection。此组合框上的DisplayMemberPath设置为FullName(仅返回名字+姓氏)
人员中存储着各种东西,例如名字,姓氏,电话号码,地址等。
现在,当我更新PersonsList中的一个人时,我将更新相应的数据字段并调用OnPropertyChanged(“ PersonsList”)。现在,当我返回查看该ComboBox时,就会发生我的问题。如果我已经更新了一个人的名字或姓氏,那么这里不会更新。但是,当我单击应该更新的人时,它将正确显示新更新的名字。
这里有2张图片来说明我的意思: https://imgur.com/a/fP6apoX
最后,这是我的XAML代码:
ComboBox ItemsSource="{Binding PersonsList, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="FullName"/>
答案 0 :(得分:0)
由于使用View映射的属性属于Person类,因此您需要按照下面的说明修改Person类,因此该属性更改事件需要由Person类触发
public class Person : INotifyPropertyChanged
{
/// <summary>
/// Property Changed Event Handler
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
private String _FirstName;
public String FirstName {
get {
return _FirstName;
}
set {
_FirstName = value;
OnPropertyChanged(nameof(FirstName));
}
}
private String _LastName;
public String LastName
{
get
{
return _LastName;
}
set
{
_LastName = value;
OnPropertyChanged(nameof(LastName));
}
}
private String _FullName;
public String FullName
{
get
{
return _FullName;
}
set
{
_FullName = value;
OnPropertyChanged(nameof(FullName));
}
}
}