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

标签 wpf mvvm key

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

我的场景是这样的:

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

最佳答案

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

我的建议:在填充数据的代码中放置一个断点,并检查 Dictionary 中包含的值(如果您使用过并有权访问它)。然后检查您添加的数据,您应该会找到复制。

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

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

  2. 在添加条目之前查看字典中是否存在该键。您可以使用 if (mSomeDictionary.ContainsKey(someEntryKey))/

  3. 来完成此操作
  4. 如果您只想使用最新值,则可以覆盖使用特定对象键入的数据。您可以使用以下方法来完成此操作:mSomeDictionary[someEntryKey] = someValue;。如果输入键尚不存在,则会自动添加一个新条目。

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

关于wpf - 已添加具有相同键的项目错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8604252/

相关文章:

c# - 将尺寸较小的网格内的大矩形居中(并且 ClipToBounds 不起作用)

wpf - 当内容适合窗口时,如何在wpf中隐藏滚动条?

wpf - 以编程方式选择并突出显示数据网格MVVM

c# - 使用属性定义 UI 的属性

C++ Map 具有两个不同值的键

c# - 有没有办法在序列化类的一部分时保留 XML 属性?

android - 什么时候应该使用 "spring for android"?

c# - 如何冒泡我的 ViewModel 层次结构中的更改?

JavaScript - 如何从对象中排除元素?

c# - 我无法让 ProcessCmdKey 工作?