我有兩個ObservableCollections:添加A型到B型(的ObservableCollection項目)
- 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中的項目(例如,更新列表框中項目的索引位置),然後將該更新的項目添加到其他集合。
E.g.如果我在ProjectFileList中更改了ItemXYZ的索引以進入列表頂部,我想將該ItemXYZ添加到WorkingFileList中,但我不認爲我可以,因爲它們都是兩個不同的對象。我將需要檢查一些項目是否已經在一個列表中,如果他們不是,那麼做什麼等,但我不能,因爲它們都是不同的對象。我需要做什麼才能將項目添加到其他ObservableCollection中?
編輯
我一直使用同一類(WorkingFileItem)兩個集合嘗試。然後繼續檢查WorkingFileList中特定項目的索引,但沒有運氣。代碼爲:
WorkingFileItem item = (WorkingFileItem)lbProjectsFiles.SelectedItem;
Int index = WorkingFileList.IndexOf (item);
以上回報的代碼爲-1,即使在WorkingFileList存在的項目
爲什麼你有兩個具有相同屬性但名稱不同的類(模型)?只需使用一個類來表示兩個集合中的對象。當您想要將一種類型的項目添加到其他類型的集合時,您將避免使用不同對象的問題。 – marcinax
@marcinax我正在使用兩個不同的ListboxItem模板,一個具有相同的文本塊和圖像,另一個沒有圖像。 – Zer0
@ F4z仍然 - 有一個班的問題在哪裏?沒有意義創建兩個完全相同的類 - 代碼複製 – MajkeloDev