Можно ли создать действительно отдельное окно в приложении Silverlight? - PullRequest
1 голос
/ 14 ноября 2009

Я пытаюсь найти окончательное "нет", но безуспешно. В идеале я хотел бы, чтобы мои приложения Silverlight закладывали дополнительные окна. Я не имею в виду ChildWindows, которые ограничены границей главного окна Silverlight, а действительно отдельное окно, которое может даже появиться на панели задач. В WPF вы используете System.Windows.Window и его свойства (например, ShowInTaskbar); однако этот класс не доступен для Silverlight.

В идеале мое приложение будет порождать отдельные окна, так же, как это делает Outlook, когда вы открываете полную информацию о контакте или встрече. Мне не нужно отдельное окно браузера, в котором размещается отдельное представление приложения Silverlight (теоретически это может работать через некоторую сложную связь между окнами JavaScript уровня DOM).

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

Ответы [ 4 ]

3 голосов
/ 15 ноября 2009

Вы можете открыть другое окно браузера (через вызов JavaScript), которое будет содержать тот же XAP, и заставить ваше приложение Silverlight при запуске определять, какое представление оно должно отображать. Связь между этим новым дочерним окном и основным будет осуществляться не через JavaScript уровня DOM, а через Local Messaging , который очень прост в использовании.

1 голос
/ 14 ноября 2009

Нет, вы не можете создать отдельное окно верхнего уровня.

Лучшее, что вы можете сделать, это использовать HyperlinkButton, чтобы открыть новое окно браузера, содержащее другой плагин Silverlight.

0 голосов
/ 16 ноября 2009

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

Вы можете создать свое приложение из нескольких небольших файлов xap, например, используя Prism. Это уменьшит начальную загрузку и позволит отображать детали в разных окнах браузера.

Отображение отдельного окна браузера довольно просто из кода. Взгляните на System.Windows.Browser . В конце концов, все, что вам нужно, это что-то вроде этого, чтобы открыть новое окно:

HtmlPage.PopupWindow(new Uri("http://localhost/Email.xap?showmessage=1234"), 
                     "_blanc", new HtmlPopupWindowOptions());
0 голосов
/ 16 ноября 2009

У меня еще не было причины попробовать его, но вы можете попробовать создать дополнительные элементы управления Silverlight в браузере, где размещено ваше основное приложение.

Microsoft имеет библиотеку Silverlight.js , которая позволяет довольно легко добавлять элементы управления Silverlight в HTML-модель DOM на лету с помощью Javascript.

Вы можете использовать DIV в HTML-документе для окон или использовать простой элемент управления вкладками, такой как Jquery Tabs . Динамическое добавление вкладок выглядит довольно просто.

Вероятно, это будет самое близкое к тому, что у вас будет несколько «окон», и все равно это будет похоже на хорошее современное веб-приложение. Однако я бы провел тщательное тестирование производительности, особенно если ваш XAP-файл большой.

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