gpt4 book ai didi

c# - 将 List 转换为 ObservableCollection

转载 作者:行者123 更新时间:2023-12-03 21:00:47 35 4
gpt4 key购买 nike

我对 MVVM 实现相当陌生。这听起来像是一个重复的问题,但我找不到任何东西可以帮助我用我的基本知识更好地理解。我有一个 Model 类,其成员如下所示:

public class Model
{
public string Name { get; set; }
public int Age { get; set; }
public List<Model> Children { get; set; }
}

我已将此模型类包装在 View 模型中,但使用 ObservableCollection 代替了 List

public class ViewModel
{
private Model model;
public ViewModel()
{
model = new Model();
}
//getters and setters for both Name and Age

public ObservableCollection<ViewModel> Children
{
//how to convert List<Model> to ObservableCollection<ViewModel> here?
}
}

我绝对不想将我的 Model 类暴露给 View ,这就是我需要创建 VM 类的 ObservableCollection 的原因。虽然不确定如何实现这一目标。任何帮助表示赞赏。

最佳答案

您可能正在寻找以下内容:

public class Model
{
public string Name { get; set; }
public int Age { get; set; }
public List<Model> Children { get; set; }
}
public class ViewModel
{
public ViewModel(Model m)
{
Name = m.Name;
Age = m.Age;
Children = new ObservableCollection<ViewModel>(m.Children.Select(md=>new ViewModel(md)));
}

public string Name { get; set; }
public int Age { get; set; }
public ObservableCollection<ViewModel> Children { get; set; }

public Model GetModel()
{
return new Model()
{
Age = Age,
Name = Name,
Children = Children.Select(vm=>vm.GetModel()).ToList(),
};
}
}

您会注意到其中很多是样板代码。但如果你这样做,你的模型/ View 模型就会完全分离,这将为你省去很多问题。

关于c# - 将 List<Model> 转换为 ObservableCollection<ViewModel>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459690/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com