我有一个多部分问题:
(1) 为什么Silverlight没有暴露DataContextChanged事件?如果微软的某个人只是在FrameworkElement类中将internal
更改为public
(就像WPF一样),那么很多麻烦都可以避免。
(2) 我已经找到one或two不同的方法来通过使用DependencyProperties来突破DataContextChanged事件。但是我无法可靠地让它们正常工作。我的测试结果显示,它们可以为我连接的第一个类正确触发DataContextChanged事件,但对于任何其他类都不会触发。是否有人遇到过这个问题?或者更好的是,他们已经解决了这个问题吗?
(3) 我想知道我的DataContext何时更改的原因是,有些UI操作在XAML中很难做到完美,但在代码后台却很简单;对于其中许多操作,我需要处理ViewModel引发的事件;因此我需要知道我的ViewModel何时更改,以便我可以连接事件处理程序。这是一个准确的世界观吗?还是我想在代码后台处理这种事情的事实,表明我的思维已经偏离了正确轨道?我不是MVVM纯粹主义者:我只想快速编写出好的代码,而且我并不特别关心如何达到目标。代码后台在过去十年里一直为我提供了相当好的服务,我不想完全放弃它。但是我的实用主义是否使自己在这一点上更加困难?