【问题标题】:trying to use an MVVM to add an object to a list尝试使用 MVVM 将对象添加到列表
【发布时间】:2021-06-08 13:11:12
【问题描述】:

好的,我正在尝试将 MVVM 模式应用于我的 c# 项目,但我遇到了这个错误。

在 mainView.xml.cs 我创建了一个 mainviewmodel

public partial class MainView : Window
{
    public MainView()
    {
        InitializeComponent();
        this.DataContext = new MainViewModel();
    }
}  

将视图与视图模型连接起来。

在 mainviewmodel.cs 我实现了一个保存方法来保存车辆

    private void SaveVehicle()
    {
        bool success = false;
        Vehicle vehicle = new Vehicle()
        {
            VehicleId = _vechicleId,
            Longitude = _longitude,
            Latitude = _latitude,
        };

        success = _context.AddVehicle(vehicle);
        

        if (success)
        {
            MessageBox.Show("Sucsess adding a vechicle");
        }
        else
            MessageBox.Show("Call 911"); 

我收到一条错误消息,提示 _context 为空,我不知道为什么会这样。

我的添加方法:

    internal bool AddVehicles(Vehicle vehicle)
    {
        //throw new NotImplementedException();
        vehicles.Add(vehicle);
        return true;
    }  

【问题讨论】:

  • 什么是_context,你在哪里设置它? vehicles 是什么?
  • 什么是车辆?
  • 私有 BusinessContext _context;并且 BusinessContext 有一个车辆列表,我试图在其中添加车辆
  • "_context is null" - 你在哪里设置_context

标签: c# .net mvvm


【解决方案1】:

在您的 cmets 中您提到您正在做的事情

mainviewmodel(Businesscontext context){ _context = context;}

但是在你展示的代码中你只是在做

this.DataContext = new MainViewModel();

所以这不是正在发生的事情

你需要做的

this.DataContext = new MainViewModel(Businesscontext);

this.DataContext = new MainViewModel(){
    Context = Businesscontext
}

这是假设你有一个

public Businesscontext Context { get=> _context; set=>_context = value;}

但是,一旦您设置了 _context,您仍然不会看到您的收藏有任何更新 因为您的数据绑定不会更新,因为它不知道模型已更改

集合上的绑定默认使用 INotifyCollectionChanged 的​​ CollectionChanged 事件 List 没有实现这个接口,因此不会告诉绑定更新

您可以使用Observable Collection

【讨论】:

  • 我不想更新我只是想将我的车辆添加到列表中,我应该使用 Observable Collection 吗
  • 当你创建一个空的列表时,你再往里面添加一些东西,这就是一个更新
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2012-02-20
  • 2021-07-29
  • 2023-01-13
  • 2014-04-21
相关资源
最近更新 更多