Вот трюк, который вы могли бы использовать.
- Убедитесь, что ваши представления Silverlight и модели представлений изолированы в их собственной сборке, на которую легко ссылаться ваше приложение WPF.
- Добавьте ссылку на библиотеку классов Silverlight, в которой хранятся модели представлений и представлений в приложении WPF.
Переместите содержимое UserControl, "CustomerView" в DataTemplate, размещенный в словаре ресурсов под названием "customerViewTemplate"
Внутри файлов XAML корневого элемента пользовательского интерфейса в Silverlight и WPF сделайте следующее:
<ContentControl ContentTemplate="{Staticresource customerViewTemplate}" />
- В файле App.xaml приложения Silverlight обязательно добавьте следующую ссылку на словарь ресурсов в объединенные словари.
<ResourceDictionary Source="MyApp.Views;component/CustomerViewResources.xaml" />
- В файле App.xaml приложения WPF обязательно добавьте следующую ссылку на словарь ресурсов в объединенные словари.
<ResourceDictionary Source="pack://application:,,,/MyApp.Views;component/CustomerViewResources.xaml" />
Извините за нумерацию, похоже, механизм упорядоченного списка Stack Overflow немного не работает.
Причина, по которой это работает, заключается в том, что вы не можете напрямую ссылаться на Silverlight UserControl из XAML в WPF. Это даст вам следующую ошибку:
'Невозможно разрешить зависимость от сборки
'System.Windows, версия = 2.0.5.0,
Culture = нейтрально,
PublicKeyToken = 7cec85d7bea7798e»
потому что он не был предварительно загружен.
При использовании API ReflectionOnly
зависимые сборки должны быть
предварительно загружен или загружен по требованию через
ReflectionOnlyAssemblyResolve
событие.
Если вы попытаетесь принудительно настроить UserControl на WPF Grid с помощью C #, вы получите следующие 3 ошибки:
Лучший перегруженный метод соответствует
«System.Windows.Controls.UIElementCollection.Add (System.Windows.UIElement)» содержит недопустимые аргументы.
тип
'System.Windows.Controls.UserControl'
определяется в сборке, которая не
ссылки. Вы должны добавить ссылку
сборке 'System.Windows,
Версия = 2.0.5.0, Культура = нейтральная,
PublicKeyToken = 7cec85d7bea7798e '
не может конвертировать из
ToWpfTest.Views.TestView для
'System.Windows.UIElement'
Я понимаю, это потому, что System.Windows.UIElement в WPF отличается от System.Windows.UIElement в Silverlight.