Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf &引用;无法将FixedToolBar类型的值添加到';UIElementCollection'&引用;但是FixedToolBar是UIElement的一个子类_Wpf_Xaml_Controls_Visual Studio 2015_Uielement - Fatal编程技术网

Wpf &引用;无法将FixedToolBar类型的值添加到';UIElementCollection'&引用;但是FixedToolBar是UIElement的一个子类

Wpf &引用;无法将FixedToolBar类型的值添加到';UIElementCollection'&引用;但是FixedToolBar是UIElement的一个子类,wpf,xaml,controls,visual-studio-2015,uielement,Wpf,Xaml,Controls,Visual Studio 2015,Uielement,我们在类库中定义了一个名为FixedToolBar的自定义控件,该类库由通过XAML使用它的第二个程序集引用。然而,VS2015显示了错误: 无法将FixedToolBar类型的值添加到“UIElementCollection”类型的集合或词典中 这是课程本身 public class FixedToolBar : Control // <-- Control is a subclass of UIElement { // Bla bla } public-class-Fixed

我们在类库中定义了一个名为FixedToolBar的自定义控件,该类库由通过XAML使用它的第二个程序集引用。然而,VS2015显示了错误:

无法将FixedToolBar类型的值添加到“UIElementCollection”类型的集合或词典中

这是课程本身

public class FixedToolBar : Control // <-- Control is a subclass of UIElement
{
    // Bla bla
}

public-class-FixedToolBar:Control/据传,这些虚拟错误曲线通常出现在以下场景中:

  • 您的xaml在项目A中
  • 项目A在其参考文献中包括项目B
  • 要添加到集合中的图元类型在项目B中定义
  • 元素的类型取决于项目C中的某种类型
  • 项目A在其引用中没有明确包含项目C。(因为它不必这样做。)
就构建系统而言,这根本不是问题,因为项目a的依赖项是递归计算的,所以它们包括依赖项的依赖项,所以项目C当然也包括在内

但显然,出于某种深不可测的原因,xaml子系统需要自行解决项目依赖关系,而且它还不够聪明,无法递归地解决它们

解决方案是使项目成为显式引用的项目C,尽管它没有使用它


还要注意,在尝试这样做时,您可能会遇到进一步的复杂情况,例如,如果您编辑A.csproj以将PackageReference添加到项目B,并重新加载项目A,则该引用可能不会显示在“引用”下,在这种情况下,幻影蠕动不会消失。一次彻底彻底的重建往往能解决这个问题。

对于投票反对的人。。。想解释一下原因吗?不同的控件都有相同的问题。有关于这个问题的最新消息吗?这似乎会导致与我们的客户端进行BAML解析时出现运行时问题。@MarqueIV我今天遇到了这个问题。我所要做的就是卸载我的项目并重新加载它。显然,当我在项目中添加外部引用时,这种情况就发生了。通过执行上述步骤,VisualStudio完全接受我的项目中的新.dll。干杯我将不得不重新访问代码库,看看这是否解决了它。真烦人。
<DockPanel>

    <c:FixedToolBar x:Name="MainToolBar" DockPanel.Dock="Top">
        <Button Header="Test 1" />
        <Button Header="Test 2" />
    </c:FixedToolBar>

    <ListBox x:Name="MainListBox" />

</DockPanel>