具有相同键的项目已添加错误

时间:2011-12-22 13:03:28

标签: wpf mvvm key

我知道这个错误很常见,但我不知道如何解决这个问题。

我的情况是:

  • 点击窗口1上的按钮,窗口2将显示(填充文本框)。
  • 在窗口2上完成交易(保存数据)。
  • 单击窗口2上的BACK按钮(关闭窗口2,打开窗口1)。
  • 再次单击窗口1上的按钮以打开并填充窗口2上的数据。
  • 错误触发。已添加具有相同密钥的项目。

1 个答案:

答案 0 :(得分:3)

听起来您正在向窗口2中的某些内容添加数据,这些内容在整个应用程序或窗口2的所有实例中共享。当您再次进入窗口2并填充数据时,您可能正在添加数据到已添加的Dictionary。因此,消息“已添加具有相同密钥的项目”。

我的建议:在填充数据的代码中加上一个断点,并检查Dictionary中包含的值(如果您使用了一个并且可以访问它)。然后检查要添加的数据,您应该找到复制。

或者,有多种方法可以防止添加重复的条目。

  1. 第一次完成后清除Dictionary - 这样您只需添加一次数据(除非您的源数据中有重复的条目)。

  2. 在添加条目之前,查看密钥是否存在于Dictionary中。您可以使用if (mSomeDictionary.ContainsKey(someEntryKey)) /

  3. 执行此操作
  4. 如果您只想使用最新值,则可以覆盖用某个对象键入的数据。您可以使用以下内容执行此操作:mSomeDictionary[someEntryKey] = someValue;。如果输入密钥尚不存在,则会自动添加新条目。

  5. 如果上述任何一个都没有帮助,请发布错误发生的代码,并在抛出的异常中包含堆栈跟踪,我们可以进一步研究它。