我有两个列表框。一个源列表框绑定到ObservableCollection<Person> MyNetwork
另一个列表框是我的目标列表框,绑定到ObservableCollection<Person> Crew
。每次我将项目放在目标列表框中时,我创建一个{{1}的新实例}。
现在我想更新新问题的属性,但它似乎不起作用。有没有办法在更改sourceItem
属性之一时更新sourceItems的副本。我是WPF和MVVM的新手,想知道这是否可行,或者是否有解决方法可以解决这个问题?
到目前为止我所拥有的:
在sourceItems(FirstName)
Source ListBox:
ViewModel
目标列表框:
private ObservableCollection<Person> _myNetwork = new ObservableCollection<Person>();
public ObservableCollection<Person> MyNetwork
{
get { return _myNetwork; }
set { _myNetwork = value; RaisePropertyChanged(); }
}
模特:
private ObservableCollection<Person> _crew = new ObservableCollection<Person>();
public ObservableCollection<Person> Crew
{
get { return _crew; }
set { _crew = value; RaisePropertyChanged("Crew");}
}
void IDropTarget.Drop(IDropInfo dropInfo)
{
Person sourceItem = dropInfo.Data as Person;
if (dropInfo.Data is Person)
{
Person person = new Person(sourceItem.FirstName,
sourceItem.LastName,
sourceItem.Profession);
Crew.Add(person);
}
}
答案 0 :(得分:0)
我建议使用包含 PropertyChanged 事件的库,以便在需要调用它们时更轻松地更新属性。
一旦示例为Caliburn for WPF。您可以在代码中使用form.groupId.$setViewValue(group.id);
来更新FirstName属性,但是您不需要(它不必仅在setter中使用)。
这是一篇关于如何使用it的好文章。
示例:
NotifyOfPropertyChange(() => FirstName)