У меня есть странная проблема, открывающая мой UserControl в Смешении Выражения при использовании управления Инструментарием Silverlight. Мой 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. Однако, когда я пытаюсь открыть свой UserControl в Blend, я получаю XamlParseException: [Строка: 0 Положений: 0] и я ничего не вижу в режиме конструктора. Более конкретно Blend жалуется:
Элемент "ListBoxDragDropTarget" не мог быть отображен из-за проблемы с Системой. Windows. Средства управления. ListBoxDragDropTarget: несоответствие TargetType.
Мое приложение Silverlight ссылается на Систему. Windows. Средства управления. Инструментарий от выпуска инструментария ноября 2009, и я удостоверился, что включал эти объявления пространства имен для 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 и просто уезжаю, Поле списка I видит все прекрасное в режиме конструктора без ошибок. Кроме того, я понял, что это происходит со множеством средств управления Инструментарием Silverlight потому что, если я комментирую ListBoxDragDropTarget и заменяю его
<controlsToolkit:BusyIndicator />
та же точная ошибка происходит в Смешении. То, что является еще более странным, - то, что, если я запускаю совершенно новое приложение Silverlight в смешении, я могу добавить эти элементы инструментария без любого вида ошибки, таким образом, это походит на что-то немое, которое происходит с моими ссылками проекта к блокам инструментария.
Я вполне уверен, это имеет некоторое отношение к загрузке стилей по умолчанию для средств управления инструментарием от его generic.xaml, так как ошибка имеет отношение к TargetType, и Смешение, вероятно, пытается загрузить стили по умолчанию.
Кто-либо встретился с этой проблемой прежде или имеет какие-либо идеи относительно того, какова может быть моя проблема?
Привет, у нас была точно такая же проблема, мы решили ее, проверив ссылки в проекте, в котором была эта проблема. Все сборки набора инструментов, на которые есть ссылки, должны находиться в одном каталоге на диске.
Ссылка в нашем проекте на System.Windows.Controls.Toolkit.dll всегда «перескакивала» обратно на исходный путь, который был причиной нашей проблемы. Мы решили, отредактировав файл проекта в блокноте ++ (или любом другом вашем любимом текстовом редакторе) и жестко закодировав путь, по которому он мог бы найти сборку.
Надеюсь, это поможет.
Для Visual Studio (возможно и Blend тоже) вам нужно добавить ссылку на :
System. Windows.Controls.Toolkit.Internals.dll
"C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Bin\System.Windows.Controls.Toolkit.Internals.dll"