[IronPython] [python] Re: Using Silverlight Controls from IronPython (Uhmm... it doesn't look like you can)
Michael Foord
fuzzyman at voidspace.org.uk
Fri Sep 14 21:16:33 CEST 2007
Jimmy Schementi wrote:
> [snip..]
>
> However, the Silverlight programming model is changing in future releases, so I wouldn't write a book about it yet. =P As soon as we can get bits into your hands ... we will.
>
>
Well I'm already part way through writing a book on IronPython and I
will *definitely* be including a chapter on Silverlight - so you ought
to make the changes as soon as possible if for no other reason than it
will make my life easier. ;-)
All the best,
Michael Foord
http://www.manning.com/foord
> ~js
>
>
>> -----Original Message-----
>> From: users-bounces at lists.ironpython.com [mailto:users-
>> bounces at lists.ironpython.com] On Behalf Of Michael Foord
>> Sent: Friday, September 14, 2007 11:10 AM
>> To: Discussion of IronPython
>> Subject: Re: [IronPython] [python] Re: Using Silverlight Controls from
>> IronPython (Uhmm... it doesn't look like you can)
>>
>> Well.... it sounds like the new model is going to be a great
>> improvement
>> for Python developers on several fronts - buuuuut.... that means every
>> online example currently available will be wrong (and I can't write my
>> Silverlight chapter until you make the changes) !
>>
>> :-)
>>
>> Michael Foord
>> http://www.manning.com/foord
>>
>> Jimmy Schementi wrote:
>>
>>> Michael,
>>>
>>> You've got it. The programming model for Silverlight 1.1 C# apps will
>>>
>> be similar to WPF (aka. code-first and optional XAML loading). We will
>> be adhering to that general idea, but making it fit right with dynamic
>> languages.
>>
>>> ~Jimmy
>>>
>>> ________________________________________
>>> From: users-bounces at lists.ironpython.com [users-
>>>
>> bounces at lists.ironpython.com] On Behalf Of Michael Foord
>> [fuzzyman at voidspace.org.uk]
>>
>>> Sent: Friday, September 14, 2007 1:49 AM
>>> To: Discussion of IronPython
>>> Subject: Re: [IronPython] [python] Re: Using Silverlight Controls
>>>
>> from IronPython (Uhmm... it doesn't look like you can)
>>
>>> Ok Jimmy - I'm reassured.
>>>
>>> When you say "We're already in the progress of removing x:Code", does
>>> that mean that the technique for creating Silverlight / IronPython
>>> applications will change ?
>>>
>>> All the best,
>>>
>>> Michael Foord
>>> http://www.manning.com/foord
>>>
>>>
>>> Jimmy Schementi wrote:
>>>
>>>
>>>> Michael,
>>>>
>>>> Thanks for finding this. Like John said, this is a known issue,
>>>>
>> however we were not aware it was per application! We are investigating
>> how best to fix this, be it talking to the right people to get the XAML
>> parser updated or removing the dependency on x:Code, whichever comes
>> first. =) We're already in the progress of removing x:Code, since it's
>> the root of this and other Silverlight+DLR integration issues.
>>
>>>> Rest-assured, using C# controls in a DLR language is a scenario we
>>>>
>> definitely want to enable!
>>
>>>> As a "today" work-around, you could do as John suggests, however you
>>>>
>> can't call into that "real" event handler since it's private. You
>> either have to pass on the event handler (which in this case isn't a
>> big deal as it's just an event to continue the button hover animation),
>> or rebuild the event handler in Python. In this case, it's simply:
>>
>>>> def PulseStoryboardCompleted(s, e):
>>>> s.Begin()
>>>>
>>>> For other situations, you have the code for the controls, so
>>>>
>> building them in Python *should* be trivial. I agree, it's a completely
>> un-ideal solution, but that'll get you working today.
>>
>>>> ~Jimmy
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: users-bounces at lists.ironpython.com [mailto:users-
>>>>> bounces at lists.ironpython.com] On Behalf Of Michael Foord
>>>>> Sent: Thursday, September 13, 2007 3:22 PM
>>>>> To: Discussion of IronPython
>>>>> Subject: Re: [IronPython] [python] Re: Using Silverlight Controls
>>>>>
>> from
>>
>>>>> IronPython (Uhmm... it doesn't look like you can)
>>>>>
>>>>> John Messerly wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Sounds like a bug in XAML event binding...
>>>>>>
>>>>>> In the Silverlight 1.1 alpha, if the XAML contains an x:Code
>>>>>>
>> element,
>>
>>>>>>
>>>>> then the XAML parser will always go to DLR/IronPython for event
>>>>>
>> hookup.
>>
>>>>> That is to say, it will never use reflection to hook the event to a
>>>>> statically defined C# method. That is a known limitation.
>>>>>
>>>>>
>>>>>
>>>>>> I thought this behavior was per-XAML file, but from what you're
>>>>>>
>>>>>>
>>>>>>
>>>>> describing it sounds like it's per application.
>>>>>
>>>>>
>>>>>
>>>>>> The only workaround I can think of would be to define a function
>>>>>>
>> in
>>
>>>>>>
>>>>> your Python code for that event ("PulseStoryboardCompleted"), and
>>>>>
>> then
>>
>>>>> from that function call into the "real" event handler.
>>>>>
>>>>> That means I need to know the details of what the XAML is hooking
>>>>>
>> up
>>
>>>>> (which I don't) and it also means that I can't use prebuilt
>>>>>
>> controls
>>
>>>>> from IronPython which is a major restriction. :-(
>>>>>
>>>>> Can you apply some gentle pressure in the right places? Jim Hugunin
>>>>> showed this working in their Vegas Mix talk - so it would be a
>>>>>
>> shame to
>>
>>>>> lose it as basically it means that you can't use IronPython to
>>>>>
>> create
>>
>>>>> rich user interfaces except completely from scratch.
>>>>>
>>>>> All the best,
>>>>>
>>>>>
>>>>> Michael Foord
>>>>> http://www.ironpython.info/
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> Hope this helps,
>>>>>> John
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: users-bounces at lists.ironpython.com [mailto:users-
>>>>>>
>>>>>>
>>>>>>
>>>>> bounces at lists.ironpython.com] On Behalf Of Michael Foord
>>>>>
>>>>>
>>>>>
>>>>>> Sent: Wednesday, September 05, 2007 2:23 PM
>>>>>> To: Discussion of IronPython
>>>>>> Subject: [IronPython] Using Silverlight Controls from IronPython
>>>>>>
>>>>>>
>>>>>>
>>>>> (Uhmm... it doesn't look like you can)
>>>>>
>>>>>
>>>>>
>>>>>> Hello all,
>>>>>>
>>>>>> I'm having an issue using Silverlight controls (compiled
>>>>>>
>> assemblies)
>>
>>>>>> from C#. Something is going wrong with member name resolution and
>>>>>>
>>>>>>
>>>>>>
>>>>> XAML
>>>>>
>>>>>
>>>>>
>>>>>> interactions.
>>>>>>
>>>>>> I've had this with controls I've created myself, but it also
>>>>>>
>> happens
>>
>>>>>> with the sample controls project in the Silverlight 1.1 Refresh
>>>>>>
>> SDK.
>>
>>>>>> If you try adding a reference to the 'Button' class and using it
>>>>>>
>> from
>>
>>>>>> IronPython, then Silverlight bombs out with the following message:
>>>>>>
>>>>>> Exception Details: System.MissingMethodException: Event handler
>>>>>> 'PulseStoryboardCompleted' is not defined
>>>>>>
>>>>>> PulseStoryBoardCompleted is setup in XAML (embedded as a resource
>>>>>>
>> in
>>
>>>>>>
>>>>> the
>>>>>
>>>>>
>>>>>
>>>>>> assembly). This exception kills Silverlight - it cannot be caught
>>>>>>
>> at
>>
>>>>>>
>>>>> the
>>>>>
>>>>>
>>>>>
>>>>>> IronPython level.
>>>>>>
>>>>>> To illustrate this, try the following IronPython code:
>>>>>>
>>>>>> import clr
>>>>>> clr.AddReference("Silverlight.Samples.Controls, Version=1.0.0.0,
>>>>>> Culture=neutral, PublicKeyToken=null")
>>>>>> from Silverlight.Samples.Controls import Button
>>>>>>
>>>>>> b = Button()
>>>>>>
>>>>>>
>>>>>> Any suggestions as to a way round this ?
>>>>>>
>>>>>>
>>>>>> All the best,
>>>>>>
>>>>>>
>>>>>> Michael Foord
>>>>>> http://www.ironpython.info/
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Users mailing list
>>>>>> Users at lists.ironpython.com
>>>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>>>> _______________________________________________
>>>>>> Users mailing list
>>>>>> Users at lists.ironpython.com
>>>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at lists.ironpython.com
>>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.ironpython.com
>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>>
>>>>
>>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.ironpython.com
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.ironpython.com
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
More information about the Ironpython-users
mailing list