将表值设置为等于其他表中的值

时间:2017-05-01 13:23:59

标签: c# wpf xaml mvvm

我有一个用作viewModel的表。从这一点来看,它应该是我视野中绑定的来源。我的目标是基于另外两个表更新此表/ viewModel。我在每个表checklistTable和AnswerTable中都有一个属性,它将在我的viewModel checkViewModel中设置。

目前我正在查询每个表中需要的当前元素,并尝试更新viewModel。

CodeBehind:

//Curent descriptions to be set in the viewModel
var currentDescription = (_check.Where(s => currentElements.Contains(s.defineId)).Select(s=> s.Description).ToList());

//Current colors to be set in the viewModel
var currentColors = (from current in _answer
                    where current.questionId == currentCheckId && 
                    current.buildingId == currentBuildingId
                    orderby current.dateReported descending
                    select current.backgroundColor).ToList();

检索theese值后,我尝试更新我的viewModel,这就是出错的地方:

for (int i =0 ; i < currentDescription.Count() - 1; i++)
{
  currentViewTable.Description = currentDescription[i];
}
for (int i =0 ; i < currentColors.Count() - 1; i++)
{
    currentViewTable.backgroundColor.Insert(i,currentColors[i]);
}

我收到错误:引用未设置为对象的实例。是否有更好的方法来更新我的viewModel,或者我做错了什么提示?

1 个答案:

答案 0 :(得分:0)

我首先建议使用foreach循环而不是常规for循环。我发现在使用列表时使用foreach会更容易,这通常会消除任何明显的“一个一个”错误。

foreach (var description in currentDescription)
{
    //do something given each element in the list
}

这似乎是一个数据完整性问题,我只能查看您的代码,并给出错误说明的内容。我建议进入调试模式并查看您生成的列表,以查看是否存在两个列表中的对象为空的任何索引,并相应地处理这些实例。