Silverlight Toolkitコントロールを使用しているときに、ExpressionBlendでUserControlを開くときに奇妙な問題が発生します。私のUserControlは、ツールキットのListBoxDragDropTargetを次のように使用します。
<controlsToolkit:ListBoxDragDropTarget mswindows:DragDrop.AllowDrop="True" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<ListBox ItemsSource="{Binding MyItemControls}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<controlsToolkit:WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</controlsToolkit:ListBoxDragDropTarget>
Visual Studio 2008ではすべてが期待どおりに機能し、正常に表示されます。ただし、BlendでUserControlを開こうとすると、XamlParseException:[Line:0 Position:0]が表示され、デザインビューに何も表示されません。より具体的には、Blendは不平を言います:
System.Windows.Controls.ListBoxDragDropTarget:TargetTypeの不一致に問題があるため、要素「ListBoxDragDropTarget」を表示できませんでした。
私のSilverlightアプリケーションは、2009年11月のツールキットリリースのSystem.Windows.Controls.Toolkitを参照しており、ListBoxDragDropTargetに次の名前空間宣言を含めるようにしました。
xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
xmlns:mswindows="clr-namespace:Microsoft.Windows;assembly=System.Windows.Controls.Toolkit"
ListBoxDragDropTargetコントロールラッパーをコメントアウトしてListBoxをそのままにしておくと、エラーなしでデザインビューにすべてが正常に表示されます。さらに、これはさまざまなSilverlight Toolkitコントロールで発生していることに気付きました。これは、ListBoxDragDropTargetをコメントアウトして、次のように置き換えるためです。
<controlsToolkit:BusyIndicator />
同じ正確なエラーがBlendでも発生します。さらに奇妙なことに、新しいSilverlightアプリケーションをブレンドで開始すると、これらのツールキット要素をエラーなしで追加できるため、ツールキットアセンブリへのプロジェクト参照で何か馬鹿げたことが起こっているように見えます。
エラーはTargetTypeに関係しており、Blendはおそらくデフォルトのスタイルをロードしようとしているため、これは、generic.xamlからツールキットコントロールのデフォルトのスタイルをロードすることと関係があると確信しています。
誰かが以前にこの問題に遭遇したことがありますか、または私の問題が何であるかについて何か考えがありますか?