或者" 你如何确保你的所有绑定都保持正确? " 
(这有点长,但请耐心等待,我试着让它尽可能短)
请考虑以下示例:
    <TextBox Name="tb" />
    <TextBlock Text="{Binding Text.TheProp, ElementName=tb}" />
在编译时完全知道绑定是不正确的(即解析器知道元素的类型tb,因此,它知道它的Text属性的类型,因此,它知道它TheProp不存在).
但是,此代码将编译并运行(尽管在调试输出中有绑定错误消息).
在某些情况下,这种行为可能非常方便:无论我的数据类型是什么,只要它具有适当命名的属性,我就可以了.因此,我们得到了一种"声明性的鸭子打字".
然而,鸭子打字并不总是一件好事.
具体来说,在使用MVVM模式时,我(大多数时候)知道所有ViewModel对象的确切类型.另一方面,模型随着时间的推移变得越来越复杂,这使我对未来的重构感到担忧:如果我决定重命名某些属性,或者上帝禁止将它们放在一个单独的聚合对象中,该怎么办?那么我的所有绑定会发生什么?我是否必须手动耙所有XAML文件?即使没有重构 - 如果我只是打错了怎么办?
在XAML的其他地方已经解决了类似的问题.例如,如果您输入了不正确的属性名称Style/Setter/@Property,则会出现编译时错误.
TemplateBinding还提供此类验证.哪个非常方便.
所以,理想情况下,我希望看到这样的事情:
ProductViewModel.cs:
    public class ProductViewModel
    {
        public Name { get; set; }
        public Price { get; set; }
    }
ProductView.XAML:
    <UserControl x:Class="Shopping.View.ProductView"
                 x:DataContextType="vm:ProductViewModel"
                 xmlns:vm="clr-namespace:Shopping.ViewModel"
                 ... >
        <TextBox Text="{Binding Name}" />  <!-- OK -->
        <TextBox Text="{Binding Price}" /> <!-- OK -->
        <TextBox Text="{Binding ABC}" />   <!-- Compile time error: …好的,所以我之前的问题没有产生任何有用的答案,所以我会尝试从不同的方向来.
我的应用程序可能有几个窗口.给定屏幕坐标中的一个点,我需要找到它"落入"哪个窗口 - 即找到包含所述点的所有窗口中最重要的窗口.
如果他们Visual在一个窗口内,我会用VisualTreeHelper.HitTest.但由于它们是不同的窗口,因此不清楚该方法的第一个参数是什么.