Geeks With Blogs
Jonas Bush Blog.blog.blog.blog

Wow, I’m still alive!

I installed the RTM of Windows 8 when it became available, and in the last few days have started taking a look at writing a windows 8 app using HTML/JS, which in and of itself is a weird thing. I don’t think that windows developers of 10 years ago would’ve thought something like this would have ever come about.

As I was working on this, I ran across a problem, found the solution, and thought I’d blog about it to try and kick start me back into blogging. I already answered my own question on Stack Overflow, but will explain here.

I needed to create a custom WinRT component to do some stuff that I either wouldn’t be able to or didn’t know how to do with the javascript libraries available to me. I had a javascript class defined like this:

WinJS.Namespace.define("MyApp", {
  MyClass: WinJS.Class.define(function() {
    //constructor function
  },
  { /*instance members*/ },
  { /*static members*/ })
});

This gives me an object I can access in javascript: var foo = new MyApp.MyClass();

I created my WinRT component like this:

namespace MyApp
{
  public sealed class SomeClass
  {
    public int SomeMethod()
    {
      return 42;
    }
  }
}

 

With the thought that from my javascript, I’d be able to do this:

var foo = new MyApp.MyClass();
var bar = new MyApp.SomeClass(); //from WinRT component
foo.SomeProperty = bar.SomeMethod();

 

When I tried this, I got the following error when trying to construct MyApp.MyClass (the object defined in Javascript)

0x800a01bd - Javascript runtime error: Object doesn't support this action.

I puzzled for a bit, then noticed while debugging that my “MyApp” namespace didn’t have anything in it other than the WinRT component. I changed my WinRT component to this:

namespace MyAppUtils
{
  public sealed class SomeClass
  {
    //etc
  }
}
And after this, everything was fine. So, lesson learned: If you’re using Javascript and create a custom WinRT component, make sure that the WinRT component is in a namespace all its own. Not sure why this happens, and if I find out why or if MS says something about this somewhere, I’ll come back and update this. Posted on Saturday, August 25, 2012 4:24 PM .Net , Win8 | Back to top


Comments on this post: Windows 8–Custom WinRT components and WinJS

No comments posted yet.
Your comment:
 (will show your gravatar)


Copyright © Jonas Bush | Powered by: GeeksWithBlogs.net