Opening an image on demand with Silverlight 2 WebClient - silverlight

I'm trying to show some images on my silverlight application whenever user wants to. The images are in a folder in my silverlight project and I don't want the user to download all of them when he/she loads the web page for the first time.
I have tried the OpenReadAsync method with a relative address to the image file which is in a folder named images and its Build Action is set to Content and also its "Copy to Output Direcoty" property is set to Always.
But I get the following exception in the OpenReadCompleted event:
The URI prefix is not recognized.
Here is the code I used:
Dim webClient As New WebClient
AddHandler webClient.OpenReadCompleted, AddressOf webClient_OpenReadCompleted
WebClient.AllowReadStreamBuffering = True
WebClient.OpenReadAsync(New Uri("images/myimage.jpg", UriKind.Relative))
Can anyone tell me how can I solve this problem?
Thanks

To start with take the images out of the silverlight project. You want the images to be in the web project then you can use a normal image tag with an empty source, then when you need to download the image set the source to the uri.

Related

richimage component src value does not work with uri value

When I set uri string value into richimage src property, I can not see the image on application ui.
If I try to paste the value into browser it shows the image
ie: file:/C:/Users/Dijitaluser/AppData/Roaming/JDeveloper/system11.1.1.6.38.61.92/o.j2ee/drs/IncomingPaperWorkWebApp.war/WEB-INF/classes/com/acme/resource/images/upload_file.png
As a matter of fact, if i put the image file into the same project as you say image/thefile.png, that's ok. But I use distributed resources project and I get the uri by using resourceBundle. So this solution is useless for me.
I' m trying to test application on my integrated weblogic server, and this uri which is returned by resourceBundleHelper, is already validated by browser. Could you plz give me some suggestions about the issue.
I trasnformed my resources project to web project to use web.xml about defining resources servlet. Then moved my all images in META-INF/adf/images and added into my VisualResourceBundle(extends ListResourceBundle) class.
It works
http://www.oracle.com/technetwork/developer-tools/adf/learnmore/86-images-from-jar-427953.pdf
hope it helps

WP7 set Image to source behind a HttpBasicAuthenticator

i am trying to set an image in a Windows Phone 7 App, there is a problem thoug, the url where the image is located required Authenticator, i have a valid username and password, but i have no idea how to load the image thoug an URI with the Authenticator?
ProfileImage.Source = new BitmapImage(new Uri(userObject.ProfileImage));
Unless you can use a authentication url, ie. http://username:password#domain.tld/image.png then you need to download the image locally first, and then load it afterwards.
You could write a custom handler for it, that downloads it to the Isolated Storage, and then automatically updates the UI, while using a fallback image (typically blank) while loading it.

Changing Silverlight Application name dynamically

I'm creating a deployable module where some parts are written in Silverlight, and I'm making the SL application deployable for OOB usage. However, I want to make Silverlight take the name of the website that it's deployed from, such as, when a user installs it from Example.com, I want to have "example.com application" with the site's own icon in the shortcut. Is there any "supported" method of doing this, or will I be going with locating the XAP file and manually changing AppManifest.xaml inside it?
You will need to find out your URL of your application:
string appURL = Application.Current.Host.Source.AbsoluteUri.Substring(0, Application.Current.Host.Source.AbsoluteUri.IndexOf(#"ClientBin/"));
So this will solve the title problem, next is the icon. You could load the image from the page:
Uri uri = new Uri(String.Format("{0}/favicon.png", appURL));
IconImage.Source = new BitmapImage(uri);
It's not perfect, you will have to manipulate appURL to get the domain name only.

File operation not permitted in Silverlight?

I have silverlight application in asp.net web. In web application i have folder which contains XPS file. Now In silverlight on button click event I am opening a popup box which contains XPS Viewer.
On button click event i'am sending URI to public function of Popup control.
and i am trying to create filestream from that uri path but getting error
File operation not permitted Access to path "" denied ?
Using AbsolutePath m trying to creat file stream
From which property of URI object i should try to create FileStream or how do i achieve it?
Creating a filestream from there will not be permissible as silverlight is in a sandboxed environment. If you need a stream open the the file first with webclient and OpenReadAsync and then use the stream from the result.
Have a look at the answer here to see more or less how to do it.
You might also be interested in this link.

Silverlight Asp.Net project integration

I added a Silverlight application to my ASP.NET website. Visual Studio made a new silverlight project and added its xap to the ClientBin folder under the project of my website. So both the projects are under one solution.
My Silverlight app is supposed to read an xml file and I was unable to make it access the file from the client bin folder under the website project. Adding a reference to that project does not work since it says only references to other silverlight applications can be added. Right now its working when the file is under the silverlight project but not when it is under the website project.
how can I make it read the file from website project?
The project structure is
WEBSITE1 (solution)
-WEBSITE1 (project)
-ClientBin
-file0.xml
-silverlightchart.xap
-SilverlightChart
-file1.xml
I can access file1.xml using
XDocument document = XDocument.Load("file1.xml");
I want to access file0.xml but no path works for me, for e.g,
XDocument document = XDocument.Load("~/ClientBin/file0.xml");
and WEBSITE1 is the startup project
You should be able to read a file from the ClientBin folder simply enough without needing to do anything special. At a guess I would say the you have accidentally set the Silverlight application as the startup project. In this scenario you want the website to be the startup project then either have the Silverlight apps test page marked as the start page or to navigate to the silverlight page once the browser has started.
Edit
The problem you have is that the Load method is synchronous but Silverlight does not support synchronous access to web resources. Hence passing a Uri to the Load method will only work if the that Uri can be fulfilled by content in the Xap. Thats why an Xml file in the silverlight project works because it ends up in the Xap.
To fetch Xml from the site you need to do this:-
WebClient client = new WebClient();
client.DownloadStringCompleted += (s, args) =>
{
XDocument document = XDocument.Load(args.result);
SomeFunctionToContinueWithDocumentProcess(document);
}
client.DownloadStringAsync(new Uri("file0.xml", UriKind.Relative);
// code exits here but _document won't be loaded yet

Resources