我正在尝试向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)