[Ironpython-users] FW: IronPython WPF application

Matt Ward ward.matt at gmail.com
Mon Dec 10 21:44:13 CET 2012


Hi,

The Window_Loaded event handler is not being run since it is missing
two parameters. This is causing wpf.LoadComponent to not wire it up
for you. If you change the code to the following then the event
handler will run and you will be able to access the window handle.

    def Window_Loaded(self, sender, e):
        self.hWnd = WindowInteropHelper(self).Handle

Alternatively to wire up the event handler in code you can use:

    def __init__(self):
        wpf.LoadComponent(self, 'WpfApp_Test.xaml')
        self.Loaded += self.Window_Loaded

Regards,

Matt

On 10 December 2012 17:03, Jackie Sproat <JackieSproat at smarttech.com> wrote:
>
>
> I am simply trying to get the handle to a WPF window, but it doesn’t seem to
> be working.
>
> I am as new to WPF as I am to IronPython so please forgive me J
>
>
> From what I have read I believe the handle is not getting set in __init__
> because it is only available at run_time(?)
>
> Therefore, have to add Loaded=”Window_Loaded” in MyWindow.xaml so that
> handle is guaranteed to be set after window is loaded(?)
>
> However, this requires a routed event handler which, I know nothing about
> but I do know the line:
>
>
>
>     ((MyWindow)(target)).Loaded +=
> System.Windows.RoutedEventHandler(this.Window_Loaded);
>
> Works in C#, not sure what the equivalent line would be in IronPython?
>
>
>
> Please help, I simply want to run MyWindow and get a handle to it!
>
>
>
>
>
> Here is a snippet of my code:
>
> class MyWindow(Window):
>
>     def __init__(self):
>
>         wpf.LoadComponent(self, 'WpfApp_Test.xaml')
>
>         self.hWnd = WindowInteropHelper(self).Handle #self.hWnd is not
> getting set
>
>         dir(self.hWnd)
>
>     def Window_Loaded(self):
>
>         self.hWnd = WindowInteropHelper(self).Handle #never gets called
>
>
>
> if __name__ == '__main__':
>
>        Application().Run(MyWindow())
>
>     #((MyWindow)(target)).Loaded +=
> System.Windows.RoutedEventHandler(MyWindow().Window_Loaded)
>
>
>
> Actual, WPF IronPython app (VS2010) is contained in .zip folder attached
> (just need to rename .zzz to .zip and decompress)
>
>
>
> Cheers,
>
> Jackie
>
>
> _______________________________________________
> Ironpython-users mailing list
> Ironpython-users at python.org
> http://mail.python.org/mailman/listinfo/ironpython-users
>


More information about the Ironpython-users mailing list