我正在尝试向 WPF Web 浏览器添加一个属性,以允许我在运行时使用 NavigateToString,但出现异常:
SystemError:无法设置未知成员“{clr-namespace:WebBrowserHelper;Assembly=helpers}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)