Придерживайтесь тега <object>
, чтобы определить свое приложение Silverlight, поскольку @Alex упоминает, что старый серверный элемент управления Silverlight устарел - все, что он делает, это отображает для вас тег object
и может не объявлять все необходимые параметры , При его использовании сделайте правый клик-> просмотреть источник на отображаемой странице и посмотрите, в чем разница между ним и использованием тега object
вручную.
Для отображения конкретной xaml-страницы внутри приложения SL я предполагаю, что выбор отображаемой страницы продиктован действиями, происходящими вне приложения. В этом случае есть несколько вариантов. Вы можете использовать javascript для вызова функции управляемого кода в приложении SL, и эта функция может показать соответствующую страницу. Вы можете вызвать приложение SL обратно на содержащую страницу - вы можете вызвать функцию javascript или получить доступ к элементу HTML на странице. В качестве альтернативы вы можете передать информацию как часть приложения SL InitParams
:
<param name="InitParams" value="<% =GetMyInitParams() %>" />
в коде страницы aspx:
protected string GetMyInitParams()
{
return "MyStartPage=Page1,SomeOtherParam=blah";
}
эти InitParams доступны как ваш StartupEventArgs
в Application_Startup
приложения SL:
private void Application_Startup(object sender, StartupEventArgs e)
{
if (e.InitParams != null && e.InitParams.Count > 0)
{
foreach (string key in e.InitParams.Keys)
{
switch (key)
{
case "MyStartPage":
myPageToShow = e.InitParams["MyStartPage"];
break;
}
}
}
this.RootVisual = new MainPage();
}