Насколько переносим Silverlight код в WPF? - PullRequest
7 голосов
/ 27 января 2009

В Silverlight я заметил, что класс Page-code-behind наследуется от UserControl:

public partial class Page : UserControl

В WPF кодовый класс страницы наследуется от Page:

public partial class Page1 : Page

Я думал, что Silverlight, будучи подмножеством WPF, позже вы сможете скопировать большие блоки кода Silverlight в WPF и наоборот. Но подобные различия на таком базовом уровне указывают на то, что это не так.

Является ли это просто аномалией или сложные приложения Silverlight будут в значительной степени не переносимы в WPF без существенных изменений?

Ответы [ 3 ]

4 голосов
/ 27 января 2009

Насколько я понимаю, кроме использования XAML, Silverlight и WPF существенно различаются. Тем не менее, между ними существует перекрестное опыление, поэтому, когда Silverlight поставляется без таких вещей, как WrapPanel, кто-то написал свою собственную реализацию в Silverlight (и в итоге она была добавлена ​​в Silverlight Toolkit).

Не ожидайте копировать и вставлять из WPF, если это не тривиальный код. Такие вещи, как привязка данных, немного отличаются в Silverlight (например, нет привязки к другим элементам). Хотя в большинстве случаев есть обходные пути.

4 голосов
/ 27 января 2009

Взгляните на эту статью , в ней рассказывается о многих вещах, которые вам нужно сделать, чтобы портировать с SL на WPF. В этой статье также есть ссылка на блог Скотта Гу на эту тему; однако в этой статье говорится о некоторых различиях, не упомянутых в блоге Гу.

1 голос
/ 08 февраля 2009

Silverlight разработан как совместимое подмножество WPF (по крайней мере там, где это «имеет смысл»). Это означает, что перенос приложения из Silverlight в WPF должен быть относительно простым. Движение в другом направлении (WPF -> Silverlight), вероятно, будет значительно более сложным.

Пример, который вы приводите в своем вопросе, иллюстрирует этот момент; класс страницы, используемый в шаблоне проекта WPF по умолчанию, не существует в Silverlight. Но класс UserControl существует в обоих. Таким образом, вы можете без проблем скопировать и вставить xaml и код из вашего приложения Silverlight, производного от UserControl, в ваше приложение WPF.

Существуют определенные части Silverlight, которые в действительности не совместимы с WPF, например, все элементы HTML DOM Bridge не имеют никакого смысла в приложении WPF, поэтому его там нет. Также класс MediaElement существенно отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...