Events can't exist statically, or per-class, since when you subscribe to an event, you're subscribing to the event on that particular instance of the window. If you had a series of buttons, for example, and subscribed a handler for when the button were pushed, if the events were per-class, then
all handlers would be called when
any button were pushed.
The Property objects are already static, though since the contents of the PropertySet itself is actually composed during object construction, it's final contents are determined by the actual class (and it's super classes) being constructed; this makes things a small bit more complicated (though not prohibitively so). It's also possible that the client app might want to add extra properties to a given instance of a window. Additionally, such custom properties might want to store data directly, which means you'd need one per instance (none of the built-in properties do though, since, as mentioned, they're static).
Having said the above, it is not to say that improvements could not be made in this area (such as Event objects only being instantiated if they have a handler subscribed to them).
I'd be happy to review any patches you submit
CE.