使用IronPython在WPF中附加属性的异常

时间:2012-12-03 07:45:44

标签: wpf ironpython

我正在尝试向WPF Web浏览器添加一个属性,以允许我在运行时使用NavigateToString,但我得到了例外:

  

SystemError:无法设置未知成员   '{CLR-名称空间:WebBrowserHelper;汇编=助手} WebBrowserHelper.Body'。

我在C#程序集中有一个工作版本,但我想知道如何使用IronPython完成它。

我的ns声明如下:

xmlns:helpers="clr-namespace:WebBrowserHelper;Assembly=helpers"

它的使用方式如下:

<WebBrowser helpers:WebBrowserHelper.Body="{Binding html}" />

这是IronPython代码:

import clr

clr.AddReference("System.Windows")
clr.AddReference("WindowsBase")
clr.AddReference("PresentationCore")
clr.AddReference("PresentationFramework")

from System.Windows import (
DependencyObject, DependencyProperty
)

class WebBrowserHelper(DependencyObject):
    _Body = None

    def __new__(cls):
        if notWebBrowserHelper._Body:
            WebBrowserHelper._Body = DependencyProperty.RegisterAttached(
                "Body", clr.GetClrType(str), clr.GetClrType(WebBrowserHelper), PropertyMetadata(WebBrowserHelper.OnBodyChanged))
        return DependencyObject.__new__(cls)

    def getBody(self):
        return self.GetValue(WebBrowserHelper._Body)

    def setBody(self, value):
        self.SetValue(WebBrowserHelper._Body, value)

    @staticmethod
    def OnBodyChanged(dependancyObject, eventArgs):
        dependancyObject.NavigateToString(eventArgs.NewValue)

    Body = property(getBody, setBody)

0 个答案:

没有答案