我想在WPF元素上监听对IsEnabled属性的更改(这样我可以在每次更改时运行一些公共代码),而不必在每个窗口/页面中加载大量代码.
我还想避免因强大的事件监听器而导致内存泄漏的任何潜在问题.我遇到过一些建议使用弱事件监听器等的文章,但对于看起来应该非常简单的事情来说,这看起来非常复杂.
我不想为了做到这一点而需要子类控件,因为有几种控件类型(以及将来可能更多)我想要监听IsEnabled的更改.
有没有人想出一个更简洁的处理方式?
我们有一些HTML页面(本地,而不是Web服务器),它们使用BASE元素来标识包含一堆常见样式表和图像的特定基目录.这是一个示例(页面存储在c:\ temp\html\test.html中,资源目录是c:\ temp\resources):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<base href="file:///c:/temp/resources/"></base>
</head>
<body>
<p><img src="image.jpg" /></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这在我测试的所有当前浏览器(Firefox,Chrome,IE9)中运行良好,并且在Quirks模式下在IE8中工作正常.但是在IE8标准模式下运行的IE8(此页面的默认设置 - 以及实际页面中所需的模式),任何样式表,脚本或图像引用都被破坏 - 就好像元素被完全忽略一样.
我已尝试过该元素的其他变体 - <base href="file:///c:/temp/resources/">或者<base href="file:///c:/temp/resources/"/>以及各种不同的文件URL,例如file:/// c:/temp/resources/test.html等,以及基础的相对href,但似乎没有说服要加载的图像/样式表/脚本.
我知道上面的例子似乎微不足道,但在我们的实际场景中,我们必须在IE8标准模式下加载IE8中的页面,并且必须设置一个特定的,所以我真的想找到一个解决方案,如果有的话.
我确实发现了一些早期IE8版本中与该元素相关的错误的引用,但它们在很久以前被标记为修复,我在一个干净的Windows 7虚拟机上测试了这个,并且应用了所有IE8更新.