Reading files in Dynamic Silverlight

Hi

I can’t work out how I can read external xaml files from Silverlight
with
IronRuby.
I’ve tried to use System::IO::File and StreamReader but both give me a
MethodAccessException.

How would I accomplish reading a xaml file in the xap with IronRuby and
Silverlight.

I would like to create a user control and load that into my main app.

System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream(
“story_details_view.xaml”)

_root = this.InitializeFromXaml(new
System.IO.StreamReader(s).ReadToEnd())
as UserControl;

I would also like to try to read an external xaml file for skinning
purposes.
Is that possible at this moment?

Cheers
Ivan

Ivan Porto C. wrote:

I would like to create a user control and load that into my main app.
purposes.
Is that possible at this moment?

In IronPython you just use the ordinary ‘file’ type to open a file that
is in the ‘xap’ file as if it was a local resource. You may find that
something similar is available in IronRuby.

Michael F.
http://www.ironpythoninaction.com

Michael F.:

In IronPython you just use the ordinary ‘file’ type to open a file that
is in the ‘xap’ file as if it was a local resource. You may find that
something similar is available in IronRuby.

I added this feature to IronPython to support the Peter Norvig spell
check demo that we used at MIX. I haven’t gotten around to adding that
functionality to IronRuby yet - it’s on the list of things to do.

Thanks,
-John

It’s not currently supported in IronRuby file IO, but here’s a
workaround (I haven’t tried this code in real, so it may not work :).

include Microsoft::Scripting::Silverlight

runtime = DynamicApplication::Environment
stream =
runtime.host.platform_adaptation_layer.open_input_file_stream(“story_details_view.xaml”)

stream is instance of the Stream class.

Tomas

Ivan Porto C.:

System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream(“story_details_view.xaml”)

_root = this.InitializeFromXaml(new
System.IO.StreamReader(s).ReadToEnd()) as UserControl;

I’m not sure why the above C# code wouldn’t “just work”. Which method
call throws MethodAccessException?
The only thing that looks odd is the GetManifestResourceStream. The way
I’ve done it is:

s = System.Windows.Application.Current.GetResourceStream(new
Uri(“story_details_view.xaml”, UriKind.Relative));

I would also like to try to read an external xaml file for skinning
purposes.
Is that possible at this moment?

Sure, just use the normal Silverlight downloading APIs. Check out the
WebClient and HttpWebRequest classes.

  • John