WPF - 编译错误:模板部分不支持"PropertyArrayStart"类型的标记

Dre*_*kes 20 .net wpf xaml dependency-properties compilation

通常情况下,我不会在SO上发布错误消息,但在谷歌搜索发现只有一次点击之后,我认为我至少会在这里发现这个错误.

我有一个自定义控件调用Sparkline一个名为Valuestype 的依赖属性unit[].这是我在一个例子中使用它DataTemplate:

<DataTemplate DataType="{x:Type Activity:ActivityHistory}">
    <Controls:Sparkline Grid.Column="1" Values="{Binding Path=Values}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

此代码无法编译.我收到错误消息:

模板部分不支持"PropertyArrayStart"类型的标签.

行/列编号表示Values属性的开头.

这真的让我失望了.在Google上搜索返回了一个结果,其中John_C遇到了完全相同的问题.不幸的是,他的解决方案涉及将控件移动到单独的组件.好吧,我的已经在一个单独的集会.我的猜测是其他东西在起作用.

我从来没有听说过PropertyArrayStart.搜索只返回与XAML序列化相关的几页.有趣的东西,但没有多大帮助.

考虑到这一点,我无法想到框架中具有数组类型的任何依赖属性.这是允许的吗?

我也尝试使用嵌套元素而不是标记扩展名Binding.

<DataTemplate DataType="{x:Type Activity:ActivityHistory}">
    <Controls:Sparkline Grid.Column="1">
        <Controls:Sparkline.Values>
            <Binding Path="Values"/>
        </Controls:Sparkline.Values>
    </Controls:Sparkline>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

......还是没有运气

欢迎任何想法!

Dre*_*kes 53

这是一个多事的27分钟...... :)

更改依赖项属性的类型unit[]IList<unit>解决问题.最重要的是,由于阵列已经实现了该接口,所以它没有回复许多代码更改.

我不确定是否通过接口(callvirt)调度到数组的速度较慢.我的猜测是肯定的.

原始的错误消息暗示这里发生了一些我不太了解的事情.我会接受任何正确解释的答案.