【问题标题】:the value of type "..." cannot be added to a collection or dictionary of type 'uielementcollection'“...”类型的值不能添加到“uielementcollection”类型的集合或字典中
【发布时间】:2011-08-14 10:50:06
【问题描述】:

当我通过 XAML 添加自定义控件时出现以下错误。可能的原因是什么? “...”类型的值不能添加到“uielementcollection”类型的集合或字典中

<Grid  x:Name="QuantityDetail" DataContext="{StaticResource ViewModel}">
    <GroupBox>
       .....
       <Label Style="{StaticResource ResourceKey=LabelValue}">Min</Label>
       <!-- The following control -->
       <NumericUpDow><NumericUpDown>
       .....
    </GroupBox>
</Grid>

【问题讨论】:

  • 你能说明你是如何定义IonNumericUpDow的吗?

标签: c# wpf xaml


【解决方案1】:

问题是我没有在我的解决方案中引用一个 dll(由 numericupdown 控件引用)。 实际上 NumericUpDown 控件不是我的控件,它存在于不同的 dll 中。这个控件引用了 System.Windows.Controls.Input.Toolkit.dll。现在我在我的解决方案中引用它。一切正常

【讨论】:

  • 值得一提的是,设计者将使用它所代表的设计项目所引用的 DLL。这意味着当解决方案正在编译和运行完美时,通常会出现此错误 - 因为链上更远的项目引用的 DLL 存在于那里,即使不在您正在设计的项目中也是如此。通常,这些引用是PresentationCoreWindowsBaseSystem.Xaml 或偶尔WindowsFormsIntegration 中的一个或多个。
【解决方案2】:

编译器声称您的控件不是UIElement(我怀疑它在撒谎),您的控件继承自什么?

【讨论】:

  • 问题已解决。实际上 NumericUpDown 控件不是我的控件,它存在于不同的 dll 中。这个控件引用了 System.Windows.Controls.Input.Toolkit.dll。现在我在我的解决方案中引用它。一切正常。
  • 但仍然不确定为什么我需要添加对该 dll 的引用。因为我不是直接使用该 dll 的人。事实上 NumericUpDown(存在于其他人的 dll 中)正在使用 System.Windows.Controls.Input.Toolkit.dll。
  • 如果引用不存在于您的应用程序中,则外部控件根本无法工作,它依赖它。
  • 你的意思是我需要在我的应用程序中添加外部控件的所有依赖项?不确定是否在所有情况下都需要这样做。这样,如果外部控件引用了其他一些外部控件,那么我还需要添加该控件的依赖项。以此类推
  • 实际上是硬件,我会打电话给你。您应该只需要添加对您的代码本身直接或间接引用的依赖项的引用,而不是您的依赖项之一所依赖的东西。他们照顾自己的依赖关系。想一想……您的项目引用的 WPF DLL 引用了一大堆其他人,您不必在项目中引用这些 DLL,除非您也引用了这些依赖项深处的类。在这种情况下,是的,您也必须添加它们。
猜你喜欢
  • 2015-12-10
  • 2014-09-07
  • 2019-03-02
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多