更新实例wpf的副本的属性

时间:2015-11-29 10:50:40

标签: c# wpf mvvm drag-and-drop listbox

我有两个列表框。一个源列表框绑定到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);
     }
}

1 个答案:

答案 0 :(得分:0)

我建议使用包含 PropertyChanged 事件的库,以便在需要调用它们时更轻松地更新属性。

一旦示例为Caliburn for WPF。您可以在代码中使用form.groupId.$setViewValue(group.id); 来更新FirstName属性,但是您不需要(它不必仅在setter中使用)。

这是一篇关于如何使用it的好文章。

示例:

NotifyOfPropertyChange(() => FirstName)