2009-05-29 31 views
13

通常は私はエラーメッセージを投稿しませんが、Google検索では1ヒットしか見つかりませんでした。ここでこのエラーのフロアを開いてください。WPF - コンパイルエラー: 'PropertyArrayStart'タイプのタグはテンプレートセクションではサポートされていません

unit[]というValuesという依存関係プロパティを持つSparklineというカスタムコントロールがあります。このコードはコンパイルされません

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

:ここで私はDataTemplateでそれを使用する例を示します。

Tags of type 'PropertyArrayStart' are not supported in template sections.

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

これは本当に私を投げました。 Googleでの検索でone resultが返されました。ここでは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> 

...まだ運がありません。

アイデアを歓迎します!

答えて

38

それは...波乱の27分となっています:)

IList<unit>unit[]から依存関係プロパティのタイプを変更するには、問題を解決しました。何よりも、配列が既にそのインターフェースを実装しているので、多くのコード変更を必要としませんでした。

インタフェース(callvirt)経由で配列へのディスパッチが遅いかどうかはわかりません。私の推測ははいです。

オリジナルのエラーメッセージには、私がかなり理解していないことが起こっていることがわかります。私はそれを正しく説明する答えを受け入れます。

+1

あなたは私のヒーローです。 :) –

+1

私はまた、応答を感謝します。自分自身だけでなく、他の誰もがこれを理解しようとしている時間の束を費やそうとしていた。 1つの素早いStackOverflow検索が真夜中に見つけられました。 +1 – TravisWhidden

関連する問題