Я также столкнулся с этой проблемой и, наконец, решил ее необычным, но успешным способом.
Мы используем Blend SDK System.Windows.Interactivity
и Microsoft.Expressions.Interactions
.
Все работает нормально, если толькоконструктор аварийно завершает работу при использовании унаследованного DataTrigger
с тем же исключением.Это не было бы беспорядком, но исключение также нарушает IntelliSense во всем документе XAML, что недопустимо.
Так как это воспроизводимая ошибка и ошибка отчета, я решил решить эту проблему с помощью разборки, так как мынужны расширения для платформы взаимодействия.
См .: http://connect.microsoft.com/VisualStudio/feedback/details/648819/visual-studio-2010-silverlight-designer-crash
Просто получите версии SharpDevelops ILSpy и откройте две сборки в нем.Выберите сборку из списка и перейдите в Файл -> Сохранить.Это позволит разобрать целые проекты.Объедините их в пустом решении и измените имена сборок.Перестройте ссылку из библиотеки Expression.Interactions на новую разобранную версию.
В AssemblyInfo.cs
вы можете выполнить хитрость.
В Microsoft.Expression.Interactions
:
[assembly: XmlnsPrefix("http://yourdomain.com/interactions", "i")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Core")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Input")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Layout")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "Microsoft.Expression.Interactivity.Media")]
in System.Windows.Interactivity
:
[assembly: XmlnsPrefix("http://yourdomain.com/interactions", "i")]
[assembly: XmlnsDefinition("http://yourdomain.com/interactions", "System.Windows.Interactivity")]
Теперь поместите ссылку на новые проекты в вашей сборке или создайте сборки и скопируйте их версию в папку библиотек и напрямую ссылайтесь на встроенные версии.
В XAML добавьте новое пространство имен к вашему корневому элементу, например страницу / окно:
<RootElement xmlns:i="http://yourdomain.com/interactions">
<!-- your xaml code -->
<i:Interaction.Triggers> ... </i:Interaction.Triggers>
</RootElement>
Это работает как шарм.Вы можете использовать функции взаимодействия и выражения, объединенные в один xmlns, и, конечно, исключение дизайнера пропало, и IntelliSense больше не сломается.