Динамически загружать изображение в Silverlight - PullRequest
2 голосов
/ 27 марта 2010

У меня есть приложение Silverlight, которое должно загружать изображение динамически, в зависимости от имени изображения. Подход, который я сейчас использую, заключается в передаче имени изображения по строке запроса на страницу и передаче его в качестве параметра тегу objet Silverlight

Это строка запроса, переданная

Response.Redirect("Build.aspx?img=" + this.PictureUploader.PostedFile.FileName;

И я пытаюсь передать его Silverlight так:

<object id="SilverlightObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="Silverlight/iMapsSL.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40624.0" />
      <param name="autoUpgrade" value="true" />
      <param name="image" value="<%# Request.QueryString["img"] %>" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>

в последнем теге param с именем = значение изображения = Requerst.QueryString

Я ловлю изображение в приложении Silverlight вот так

private void Application_Startup(object sender, StartupEventArgs e)
    {
        string pictureName = "";

        if (e.InitParams != null && e.InitParams.Count > 0)
        {
            pictureName = e.InitParams["image"];

            this.RootVisual = new MainPage(pictureName);
        }

        else
        {
            this.RootVisual = new MainPage();
        }
    }

И когда запускается MainPage, я устанавливаю источник изображения для элемента управления Image следующим образом

this.Image.Source = new BitmapImage(new Uri(pictureName, UriKind.RelativeOrAbsolute));

Но Silverlight загружается без изображения, кто-нибудь может помочь?

1 Ответ

1 голос
/ 27 марта 2010

Вы не можете установить произвольные значения, придумывая имена параметров, такие как «изображение». InitParams создаются путем указания параметра "initparams". Значение "initparams" - это разделенный запятыми набор пар имя = значение. Следовательно, ваш код должен выглядеть так: -

<object id="SilverlightObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="Silverlight/iMapsSL.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40624.0" />
      <param name="autoUpgrade" value="true" />
      <param name="initparams" value="image=<%# Request.QueryString["img"] %>" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
...