26

通常、私は SO にエラー メッセージを投稿するだけではありませんが、Google 検索でヒットが 1 つしか見つからなかったので、SO でこのエラーについて少なくともフロアを開くと思いました。

typeSparklineという依存関係プロパティで呼び出されるカスタム コントロールがあります。で使用する例を次に示します。Valuesunit[]DataTemplate

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

このコードはコンパイルされません。次のエラー メッセージが表示されます。

タイプ 'PropertyArrayStart' のタグは、テンプレート セクションではサポートされていません。

行/列番号は、Values属性の開始を示します。

これは本当に私を投げました。Google で検索すると、 John_Cがまったく同じ問題に遭遇した1 つの結果が返されました。残念ながら、彼の解決策は、コントロールを別のアセンブリに移動することでした。ええと、私のものはすでに別のアセンブリにあります。私の推測では、他の何かが働いているということです。

聞いたことがない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 に答える