1

Я создаю приложение Silverlight, которое будет запускаться в браузере и использует некоторые средства визуализации данных, предоставляемые ComponentArt. В какой-то момент я также хотел бы создать версию xaml/C# для WinRT, чтобы она могла запускаться как приложение для хранения в Windows всех выпусков Windows 8, включая WindowsRT.Обмен кодом между silverlight и приложением WinRT

Мой вопрос в том, как я могу подойти к этому, чтобы получить максимальное повторное использование кода между двумя версиями. Я не вижу другого способа, кроме двух версий (поскольку я привязан к использованию компонента и не могу использовать подход html/js). В частности, насколько портативен xaml, используемый в приложении silverlight, в приложении для магазина Windows?

ответ

2

Ваш XAML такой же портативный, как и функции, которые вы используете. Вы не можете повторно использовать одни и те же файлы XAML, так как они используют разные пространства имен и схемы URI xmlns, и вы, скорее всего, захотите сделать интерфейс немного отличающимся, поскольку Silverlight - это в первую очередь интерфейс мыши + клавиатура, а WinRT/XAML в первую очередь касается.

Убедитесь, что вы используете MVVM для повторного использования большого количества кода, отличного от XAML. При выборе того, какие элементы управления использовать - убедитесь, что они доступны в WinRT/XAML или имеют хорошие альтернативы. Некоторые из недостающих вещей, которые я видел, были WriteableBitmap.Render() метод, RadialGradientBrush, TypeConverterAttribute, Style/Setter привязки, TreeView, DataGrid или GridSplitter элементы управления. Хотя есть версии с открытым исходным кодом из многих отсутствующих элементов управления - вы, скорее всего, захотите использовать альтернативные подходы к дизайну интерфейса для приложений Windows Store, так как они не работают с сенсорным интерфейсом.

Для справки - я провел около 2-3 часов портирования TreeView управления из Silverlight Toolkit для WinRT, вокруг столько для Calendar управления и 20-30 часов в порт Chart управления с множеством видов точек данных и серий - и это на вершине оригинального порта Махмуда Муссы. В зависимости от сложности функций, которые вы используете, требуемые усилия, очевидно, будут расти. Если вы просто используете Buttons, TextBoxes, TextBlocks, RadioButtons, CheckBoxes и т. Д. - вы можете в основном сделать копию &, чтобы вставить XAML. Я также избегаю повторного набора элементов управления, поскольку части шаблонов и визуальные состояния/группы визуального состояния немного отличаются между этими платформами, поэтому вам нужно либо переделать работу, либо потратить время на исправление шаблонов.

Смежные вопросы