Can a python class passed back to .Net
This might be an obvious problem out of my lack of understanding how Python.Net work. I am exploring the possibility of program WPF ViewModel. After resolving the problem inheriting .Net interface class, class ViewModel(System.ComponentModel.INotifyPropertyChanged): __namespace__ = "WPFPy" .... class MyViewModel(ViewModel): .... here to implement follow ironpython examples then assign it to DataContext self.window = System.Windows.Markup.XamlReader.Load(outStream) self.window.DataContext = MyViewModel() this does not seem to work, the property/method in MyViewModel is never called nor any data binding happened. I was able to get ExpandoObject work well though and binding works fine self.window.DataContext = System.Dynamic.ExpandoObject() so, that makes me asking if it makes sense at all to pass a Python class object back into .Net framework and expect it works -- even if the proper interface is implemented. thanks
You have to decorate the methods you want to expose to .net with the
clrmethod decorator, e.g.
class MyClass(IInterface):
@clrmethod(int, [str])
def overridden_method(self, x):
return len(x)
The parameters to the clrmethod decorator are the method return type and
argument types. You can expose properties similarly using the clrproperty
decorator.
See runtime/resources/clr.py for details.
regards,
Tony
On Wed, Mar 16, 2016 at 9:29 PM Hansong Huang
This might be an obvious problem out of my lack of understanding how Python.Net work.
I am exploring the possibility of program WPF ViewModel.
After resolving the problem inheriting .Net interface class,
class ViewModel(System.ComponentModel.INotifyPropertyChanged): __namespace__ = "WPFPy" ....
class MyViewModel(ViewModel): .... here to implement follow ironpython examples
then assign it to DataContext
self.window = System.Windows.Markup.XamlReader.Load(outStream) self.window.DataContext = MyViewModel()
this does not seem to work, the property/method in MyViewModel is never called nor any data binding happened.
I was able to get ExpandoObject work well though and binding works fine self.window.DataContext = System.Dynamic.ExpandoObject()
so, that makes me asking if it makes sense at all to pass a Python class object back into .Net framework and expect it works -- even if the proper interface is implemented.
thanks
_________________________________________________ Python.NET mailing list - PythonDotNet@python.org https://mail.python.org/mailman/listinfo/pythondotnet
participants (2)
-
Hansong Huang
-
Tony Roberts