26

通常我不会只在 SO 上发布错误消息,但在 Google 搜索后只找到一个点击,我想我至少会在 SO 上为这个错误打开地板。

我有一个名为typeSparkline的依赖属性调用的自定义控件。这是我在 a 中使用它的示例:Valuesunit[]DataTemplate

<DataTemplate DataType="{x:Type Activity:ActivityHistory}">
    <Controls:Sparkline Grid.Column="1" Values="{Binding Path=Values}" />
</DataTemplate>

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

模板部分不支持“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>

......仍然没有运气。

欢迎任何想法!

4

1 回答 1

65

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

将依赖属性的类型从更改unit[]IList<unit>解决问题。最重要的是,它不需要太多代码更改,因为数组已经实现了该接口。

我不确定通过接口(callvirt)分派到数组是否更慢。我的猜测是肯定的。

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

于 2009-05-29T15:39:57.613 回答