以类型安全的方式将DataContext共享给UserControl

Tob*_*ias 2 silverlight datacontext user-controls

我正在开发我的第一个Silverlight 4应用程序,并且正在努力如何以类型安全的方式将我的MainPage.xaml中的顶部元素(网格)上的DataContext集合共享到基础UserControl中.DataContext是我的ViewModel类的一个实例,我的想法是能够将UserControl中的某些元素绑定到ViewModel的属性.

我很确定ViewModel对象会冒泡到我的UserControl但是我怎么能在UserControl中确保DataContext的类型为PatternCreatorViewModel?

希望这是可以理解的!

Ken*_*ith 5

这是(在我看来)Silverlight和WPF中数据绑定模型的最大限制之一,即在此过程中的任何地方都没有类型安全.只要您输入{Binding ...},您就可以在没有网络的情况下工作.MS设法采用了一种非常光荣的强类型语言,如C#,并将其与一个完全非类型安全的数据绑定模型联系起来,从而破坏了Anders Hejlsberg十年来对C#的精彩工作.在使用动态语言时,您会期望这种"松散",但在处理C#时则不然.

当您更改View的底层ViewModel时,这种限制确实会成为问题,因为当然,没有简单的方法来测试您的数据绑定.通常,当你有无法测试的代码时,你至少可以依靠编译器来告诉你,你要求代码做什么是没有任何意义的.但是因为MS使数据绑定非类型安全,不仅你不能测试你的更改,你甚至不能依赖编译器告诉你什么时候没有任何意义.并且,为了增加对伤害的侮辱,您甚至不能依赖于运行应用程序并查看是否收到任何错误消息:因为绑定总是无声地失败.您可以做的最好的事情是打开日志记录级别并遍历大量的调试错误消息.Uggh.讨厌地狱.

请看我在这里发布的博客,我在这里提出的另一个问题,以及我在这里的答案,以便更深入地了解基础问题.

我应该注意到,在我看来,我似乎几乎是孤身一人,所以也许有一些我不知道的东西.但是我个人认为你已经在头上敲了一下.

  • 您并不孤单:P与先前版本的实体框架相同,包括路径 - 至少在最新版本中已得到修复.所以希望有一天WPF中的绑定也会更好......(顺便说一下,当然绑定是类型保存,你只是不能定义DataContext的类型,必须使用自定义DependencyProperties) (2认同)