У меня есть две ObservableCollections:
- WorkingFileList
- ProjectFileList
Чтобы заполнить обе эти коллекции, у меня есть два класса, которые наследуют INotifyPropertyChanged:
- WorkingFileItem (добавляет в коллекцию WorkingFileList)
- ProjectFileItem (добавляет в коллекцию ProjectFileList)
Что касается свойств, у них обоих одинаковые строки и имена:
public class WorkingFileItem : INotifyPropertyChanged
{
string name;
public string Name
{
get { return name; }
set
{
if (name != value)
name = value; OnPropertyChanged("Name");
}
}
string filepath;
public string FilePath
{
get { return filepath; }
set
{
if (filepath != value)
filepath = value; OnPropertyChanged("FilePath");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ProjectFileItem : INotifyPropertyChanged
{
string name;
public string Name
{
get { return name; }
set
{
if (name != value)
name = value; OnPropertyChanged("Name");
}
}
string filepath;
public string FilePath
{
get { return filepath; }
set
{
if (filepath != value)
filepath = value; OnPropertyChanged("FilePath");
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
Я связал два списка, используя:
ObservableCollection<WorkingFileItem> WorkingFileList = new ObservableCollection<WorkingFileItem>();
LB1.ItemsSource = WorkingFileList
ObservableCollection<ProjectFileItem> ProjectFileList = new ObservableCollection<ProjectFileItem>();
LB2.ItemsSource = ProjectFileList
Проблема:
Возможно, мне захочется обновить элемент в ProjectFileList (например, обновить позиции индекса элементов в списке), а затем добавить этот обновленный элемент в другую коллекцию.
Например. Если бы я изменил индекс ItemXYZ в ProjectFileList, чтобы перейти в верхнюю часть списка, я бы хотел добавить этот ItemXYZ в WorkingFileList, но я не думаю, что смогу, потому что это два разных объекта. Мне нужно будет проверить, есть ли какие-то элементы в одном списке, и если их нет, то делать что угодно и т.д., но я не могу, потому что это разные объекты. Что мне нужно сделать, чтобы добавить элементы в другую коллекцию ObservableCollection?
Изменить
Я пробовал использовать один и тот же класс (WorkingFileItem) для обеих коллекций. Затем приступил к проверке индекса определенного элемента в WorkingFileList, но безуспешно. Код был:
WorkingFileItem item = (WorkingFileItem)lbProjectsFiles.SelectedItem;
Int index = WorkingFileList.IndexOf (item);
Приведенный выше код возвращает -1, даже если элемент существует в WorkingFileList.