我的应用程序是翻译应用程序。它包含传递给不同视图模型的翻译列表。这些视图模型可能会修改这些列表,包括添加和删除操作。为此,我ObservableCollection在构造函数中将此列表转换为 an ,并且我的列表不再被修改。我知道转换为 anObservableCollection会创建一个新对象,并且引用不再相同。它对于相关视图来说工作得很好,但是一旦我想更改为另一个视图,列表就不会更新。我想知道解决这个问题的最佳方法是什么?
我认为我可以创建一个自定义 ObservableCollection,其中包含相应的列表,并在完成添加或删除操作时自动更新它。看起来与此类似的东西。
看法
public partial class MainWindow : Window
{
private void ListViewItem_PreviewMouseDown(objectsender,MouseButtonEventArgs e)
{
// this is where I instanciate the viewModel, and the
// list<Translation> isn't modify once I close the view
DataContext = new ModifyWordVM(translations);
}
}
视图模型
public class ModifyWordVM: INotifyPropertyChanged
{
private ObservableCollection<TranslationVM> translations;
public ObservableCollection<TranslationVM> Translations
{
get { return translations; }
set { translations = value; OnPropertyChanged("Translations"); }
}
public ModifyWordVM(List<Translation> translations)
{
// Converting list to ObservableCollection
Translations = ConvertionHelper.ConvertTo(translations);
}
}
我想知道恢复修改后的列表的更干净的方法是什么。
炎炎设计
相关分类