我们在类库中定义了一个名为FixedToolBar的自定义控件,它由通过XAML使用它的第二个程序集引用。但是,VS2015显示了错误:
不能将FixedToolBar类型的值添加到“UIElementCollection”类型的集合或字典中。
这是这个类本身
public class FixedToolBar : Control // <-- Control is a subclass of UIElement
{
// Bla bla
}
...and这是XAML片段..。
<DockPanel>
<c:FixedToolBar x:Name="MainToolBar" DockPanel.Dock="Top">
<Button Header="Test 1" />
<Button Header="Test 2" />
</c:FixedToolBar>
<ListBox x:Name="MainListBox" />
</DockPanel>
更奇怪的是,它只显示在打开XAML编辑器时的错误,但其他情况下编译和运行都很好!
知道为什么吗?让VS在设计时报告所有这些错误真的很烦人。所有这些红色的谎言使XAML da@n几乎不可读!
发布于 2020-08-14 13:01:48
有传言说,这些幻影错误通常出现在以下情况下:
就构建系统而言,这根本不是一个问题,因为项目A的依赖关系是递归计算的,因此它们包含依赖项的依赖项,因此项目C当然会包括在内。
但显然xaml子系统出于某种无法理解的原因,需要自己解决项目依赖关系,而且它不够聪明,无法递归地解决它们。
解决方案是使项目A明确引用项目C,尽管它没有使用它。
还请注意,在尝试这样做时,您可能会遇到进一步的复杂情况,例如,如果您编辑A.csproj以将一个PackageReference添加到项目B,并重新加载项目A,则该引用可能不会出现在“引用”下,在这种情况下,幻影陷阱不会消失。一个适当的完全干净的重建倾向于解决这个问题。
https://stackoverflow.com/questions/32569570
复制相似问题